Dog d = new Dog();
display(d);
Cat c = new Cat();
display(c);
public static void display(Animal r){
r.eat();
}
// 1. 다형성 인수
서로 다른 Cat, Dog이라는 object를 param으로 넣고싶다.
다형성이 없다면, overload로 input type만 다르게 "코드의 중복"을 만들어야하는데,
클래스 상속을 통해 (다형성을 통해) 하나의 함수로 해결했다.
"중복의 제거"가 이루어진것이다.
// 나 혼자 생각
+ 회원 이라고 치면 멤버 클래스에
일반멤버 클래스랑, 프리미엄 멤버 클래스랑 둘 다 있을것
이 때, 두 멤버가 공통으로 실행 가능한 메서드가 있을것이다.
대신 멤버종류에 따라 다른 기능을 실행할수있다.
Leetcode로 따지면,
1)
if (멤버타입 == 일반멤버 ) {
basic.submit(basic);
}
if (멤버타입 == 프리미엄멤버 ) {
preimium.submit(prem);
}
이런 식으로 함수 관리할수도 있는데,
2)
overriding해서
member.submit(member);
으로 콜 할수 있을것 같다.
애매한 부분이 있지만, 개념적으론 맞는것같다.
Animal[] r = new Animal[2];
r[0] = new Dog();
r[1] = new Cat();
r[0].eat();
r[1].eat();
// 2. 다형성 배열
배열에 서로 다른 타입을 담지 못함
-> 부모 클래스 타입으로 배열 생성
-> 서로 다른 자식 클래스를 담을 수 있음
// 나 혼자 생각
위 예시 처럼 일반멤버, 프리미엄멤버 차이로 따지면,
데이터 관리할때 만약 배열로 담아서 넘긴다고 치면
멤버들을 다 던져줘야하는데
일반멤버만 따로 던지고,
프리미엄만 따로 던지는 어이없는 짓을 하기 싫다.
그래서 부모 클래스인 멤버 타입으로 배열 만들어서
각각 다른 타입인 일반멤버와 프리미엄멤버를 한 배열에 담아서 던질수 있다.
code 출처 : 박매일 - JAVA TPC
빨리 완강해서 chaedie () extends JAVA TPC{}
해야겠다.
super(); 한다구요~