다형성
- 하나의 객체가 많은 형(타입)을 가질 수 있는 성질
- 상속 관계에 있을 때 조상 클래스의 타입으로 자식 클래스 객체를 레퍼런스 할 수 있다.
다형성의 활용
예1) 다른 타입의 객체를 다루는 배열
- 배열의 특징 - 같은 타입의 데이터를 묶음으로 다룬다.
- 다형성으로 다른 타입의 데이터 (Person, SpiderMan)를 하나의 배열로 관리
- Object의 배열은 어떤 타입의 객체라도 다 저장할 수 있음
예2) 매개변수의 다형성
참조형 객체의 형 변환
- 묵시적 캐스팅
- 조상을 무작정 자손으로 바꿀 수는 없다.
- 무늬만 바꾸는 것..? 자식의 객체에는 접근이안됨..
- instanceof 연산자..!
- 명시적 캐스팅
참조 변수의 레벨에 따른 객체의 멤버 연결
- 상속 관계에서 객체의 멤버 변수가 중복될 때
- 상속 관계에서 객체의 메서드가 중복될 때(메서드가 override 되었을 때)
- 무조건 자식 클래스의 메서드가 호출됨 -> virtual method invocation
- 최대한 메모리에 생성된 실제 객체에 최적화된 메서드가 동작한다.