부모클래스 타입으로 업캐스팅 될 경우 자식 객체는 부모클래스가 가지고 있는 멤버만 사용할 수 있다.
자식클래스가 부모클래스로 업캐스팅되는 경우 명시적인 형변환을 선언하지 않아도 자동으로 형변환이 된다.
public class Main {
public static void main(String[] args) {
Main m = new Main();
m.makeSounds(new Cat());
}
public void makeSounds(Pet pet){ //업캐스팅을 통해 다양한 동물의 소리를 낼 수 있음
pet.sounds();
}
}
class Pet {
public void sounds() {
}
}
class Dog extends Pet {
public void sounds() {
System.out.println("멍멍");
}
}
class Cat extends Pet {
public void sounds() {
System.out.println("냐옹");
}
}
class Pig extends Pet {
public void sounds() {
System.out.println("꿀꿀");
}
}
public void makeSounds(Cat cat) {
cat.sounds();
}
public void makeSounds(Dog dog) {
dog.sounds();
}
public void makeSounds(Pig pig) {
pig.sounds();
}