본문 바로가기
프로그래밍 언어/Java

Java) 10/26 - 다형성 (Polymorphism)

by nomfang 2021. 10. 26.
728x90
반응형

다형성

이기종 간의 서브 클래스들을 핸들링 하기 위해 상위 클래스에서 다룰 수 있도록 하는 것
부모 타입으로 다양한 자식 객체를 생성하는 것 (상속을 전제로 한다)

부모 타입 배열 생성 = { new 자식 타입1,
new 자식 타입2 };

다형성을 이용하여 부모 타입으로 자식 객체를 생성하면
여러 타입의 데이터를 하나의 배열에 담을 수 있다..!

코드의 재사용성이 강력한 기능..!

부모 클래스 타입 변수명 = new 자식 클래스();

다형성의 2가지 이슈

1. Virtual Method Invocation
-> 자식 객체에서 부모를 물려받고 overriding 된 메소드를 호출 시
: 컴파일 시점에서는 부모 method를 호출 하지만 runtime 시에는 자식의 method를 호출
2. Object Casting
-> 오버라이딩을 하지 않고 자식에서 생성된 메소드는 사용 시 업캐스팅 필요..!
ex) : ((Manager) m ).changeDept("Marketing");

// 상속 받은 메소드는 사용 가능한 것 같다
// 상속 받은 함수를 제외한 (자식에서 생성된) 메소드는 기본적으로 사용이 안되는 것 같다

다형성과 상속의 단점

다형성과 상속은 작은 규모에서는 유용할 수 있지만
높은 결합도 때문에 문제를 초래하기도 한다
(원하지 않는 것이 상속 되기도 하는)
이러한 것들을 해결할 수 있는게 인터페이스..!
인터페이스 까지 온전히 이해하고 있어야 OOP의 개념을 안다고 할 수 있고
제대로 활용할 수 있다

instanceof

자식 타입을 검사할 때 쓴다

반응형

'프로그래밍 언어 > Java' 카테고리의 다른 글

Java) 10/28 - final  (0) 2021.10.28
Java) 10/28 - static  (0) 2021.10.28
Java) 10/26 - 상속  (0) 2021.10.26
Java) 10/26 - Access Modifier (접근 지정자)  (0) 2021.10.26
Java) 10/26 - Method Overloading, 생성자 Overloading  (0) 2021.10.26

댓글