JAVA

[JAVA] 다형성

리포터12 2022. 11. 15. 18:15
728x90

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 

728x90