[JAVA] 다형성
Class A를 상속받은 class B 의 인스턴스를 데이터 타입이 class A 인 변수 obj 에 할당한다.
이렇게 데이터 타입이 다른 변수에 인스턴스를 대입할 경우,
자바는 해당 변수를 데이터 타입 A로 인식하게 된다.
즉 B의 인스턴스이지만 B의 값은 사용하지 못하고, A의 값만 사용하도록 강제된다.
다른 한편, 만약, sub class B가 Class A 의 메서드를 오버라이딩 한다면 B가 가진 메서드(오버 라이딩 된)가 실행된다.
+@
이러한 sub class 가 B 뿐만 아니라 C , D, E, F, G .....,x 26 만큼 있다면 어떻게 될까?
- a타입, b타입, c타입, d타입 ~~~~ 이런 식으로 같은 개념을 여러 개로 만들어 관리하게 되면,
해당 동일한 개념을 가진 인스턴스들을 사용해야할 때, 하나의 데이터 타입에 인스턴스들을 담을 수 없게 되고,
각 데이터 타입이 맞는 변수에 할당해야만 함.
중복 코드가 기하급수적으로 늘어나네????=> 더럽게 비효율적
오버라이딩을 가미한다면?
해당 sub class 들의 인스턴스를 모두 super class 인 class A 타입에 넣게 되면!!
하나의 자료형에 다양한 인스턴스들을 넣을 수 있게 된다!
요약
서로 다른 인스턴스들을 동일한 자료형에 넣고, super class 의 메서드를 오버라이딩 하면,
서로 다른 인스턴스들은 서로에게 영향을 미치지 않으면서 존재할 수 있게 되며 각자의 특색을 띄게 된다.
자료형 상이에 따른 코드 불필요한 중복도 감소된다. 관리하기도 편해짐.
참고자료
https://www.youtube.com/watch?v=87YsO_vBG0c