개인 공부 (23.07~

[JAVA] 다형성, 동적 바인딩 예시

Song쏭 2023. 10. 8. 17:13

- 다형성이란 특징이 있기에 

부모타입의 변수에 자식객체를 선언할 수 있다.

 

- draw() 메서드 내에서 draw()를 호출할 때

Java는 어떤 메서드를 호출해야할 지 결정하는 과정에서

현재 객체의 타입을 기반으로 메서드를 결정한다.

이것은 컴파일 시간이 아닌 런타임에서 발생하고, 동적 바인딩이라고 한다.

 

Parent c = new Child(); 

변수 c는 Parent 타입의 참조 변수이지만 

실제로는 Child 객체를 참조하고 있다.

 

c.paint();를 호출할 때,

Child 클래스의 paint()가 실행된다. 

이 메서드 내 super.draw()가 호출되면, Parent클래스의 draw()가 호출된다.

 

Child 클래스의 paint() 내에서 draw()를 호출할 때,

Java는 c가 현재 참조하고 있는 객체의 타입인 Child의 draw()를 호출한다.

 

c.draw()를 호출하면, Child클래스의 draw()가 호출된다.