Polymorphism 다형성

최민수·2023년 7월 20일
0

프로그래밍 언어

목록 보기
10/14

다형성 Variable

다형성이란 한 타입의 참조변수를 통해 여러 타입의 객체를 참조할 수 있도록 만든 것.

객체를 어느 참조변수에 담을지가 목적에 따라 달라질 수 있다.
따라서 객체를 목적에 맞게 다르게 쓸 수 있다.

* 예시) 계층구조
Object(a)
   |
Employee(b)
   |  |
Engineer(c) Manager(d)

ㅁ e = new Engineer();

ㅁ 에 들어갈 수 있는 타입은 Engineer, Employee, Object 세 가지.

사용할 수 있는 메서드는,

Engineer -> e.a, e.b, e.c
Employee -> e.a, e.b
Object -> e.a

즉, 담을 참조변수의 타입에 따라 메서드 사용범위가 달라진다.


동적 바인딩

위의 계층구조에서,
Employee e = new Engineer(); 로 선언하면 e의 타입은 무엇이고, 사용할 수 있는 메서드는 무엇일까?

우선 e의 타입은 Engineer 이다. Employee 라는 그릇에 담았을 뿐이고, 따라서 참조변수 e가 사용할 수 있는 메서드는 Employee가 가진 메서드이다.

하지만 예외적으로 자바는 재정의된 메서드(Override) 에 대해서는 하위 메서드의 메서드를 적용해준다. 이것을 동적 바인딩 이라고 한다.

런타임에 자바는 EngineerEmployee 의 관계에 대해 알고 있고, Engineer 에 재정의된 메서드가 있다면 그것을 인지하고 반영해준다.

당연히 부하가 걸리고 실행속도는 느려지겠지만, 객체지향 다형성의 꽃이라고 볼 수 있다.

profile
CS, 개발 공부기록 🌱

1개의 댓글

comment-user-thumbnail
2023년 7월 20일

정말 유익한 글이었습니다.

답글 달기