상위클래스가 동일한 메세지로 하위 클래스를 서로 다르게 동작시키는 객체지향 이론
클래스 확장시키가 쉽고 , 유지보수하기가 쉽다.
1.상속관계
2.Override(재정의)
3.Upcasting
4.동적 바인딩(실행시점에서 사용될 메서드가 결정되는 바인딩)
정적바인딩(컴파일 시점에서 사용될 메서드가 결정되는 바인딩)
public class Test{
public static void display(Dog d){
d.eat
}
public static void display(Cat c){
c.eat
}
public static void main(String[] args){
Dog d = new Dog();
display(d);
Cat c = new Cat();
diplay(c);
}
}
만약 이런코드가 있다.
객체가 Dog, Cat 두개가 아니라 하마, 호랑이 사자 등등 여러가지의 객체를 생성해서 display메서드를 사용하려면
display메서드 수도 기하급수적으로 늘어난다
이러한 단점을 해결하기 위해
public static void display(Animal ani){
ani.eat();
}
다형성 인수를 사용하여 하나의 타입으로 만들어 자식들에게 사용하게 한다.