✅ Upcasting(업캐스팅) : 부모가 자식을 가리키는 객체생성 방법
부모클래스 변수명 = new 자식클래스명();
// 부모클래스(Animal)
public class Animal {
public void eat() {
System.out.println("먹다.");
}
}
// 자식클래스(Dog)
public class Dog extends Animal{
}
// 자식클래스(Cat)
public class Cat extends Animal {
public void night() {
System.out.println("밤에 눈에서 빛이 난다.");
}
}
// Dog, Cat 객체 사용 예시
import fc.java.model.Animal;
import fc.java.model.Cat;
import fc.java.model.Dog;
public class DogCatUpcastingTest {
public static void main(String[] args) {
// Dog d = new Dog();
// d.eat();
Animal a = new Dog();
a.eat(); // 먹다.
a = new Cat();
a.eat(); // 먹다.
}
}
상속체이닝 : 맨 위 부모클래스부터 객체가 생성되어 자식까지 연결되는 구조
super() : 상위 클래스의 생성자를 호출하는 메서드
public class Object {
}
public class Animal extends Object {
public Animal() {
super();
}
}
public class Dog extends Animal {
public Dog() {
super();
}
}
Dog x = new Dog();
Animal x = new Dog(); // *Upcasting
Override : 상속관계에서 하위클래스가 상위클래스의 동작을 재정의하는 행위(기능 추가, 변경)
동적바인딩 : 실행시점에서 사용될 메서드가 결정되는 바인딩
public class Dog extends Animal{
public void eat() {
System.out.println("개처럼 먹다.");
}
}
public class Cat extends Animal {
public void night() {
System.out.println("밤에 눈에서 빛이 난다.");
}
public void eat() {
System.out.println("고양이처럼 먹다.");
}
}
import fc.java.model.Animal;
import fc.java.model.Cat;
import fc.java.model.Dog;
public class OverrideTest {
public static void main(String[] args) {
// Upcasting(업캐스팅)
Animal a = new Dog();
a.eat(); // Animal --> (동적바인딩) --> Dog
a = new Cat();
a.eat(); // Animal --> (동적바인딩) --> Cat
}
}