다형성 (Polymorphism)

민태영·2024년 3월 1일
0

다형성

다형성이란 poly(여러개) + morphism(형태 or 실체)의 결합어로
하나의 객체가 여러가지 형태를 가질 수 있는 것을 의미한다.
한마디로 자바에서 부모클래스타입의 변수가 다양한 자식클래스타입의 객체를 참조할 수 있다.
이는 자바에서 굉장히 중요하게 다뤄지는 개념이다.

예)1

public class Computer {
	...
    public String toString() {
    	...
    }
}

public class Notebook extends Computer {
	...
    public String toString() {
        ...
    }
}

public static void main(String [] args) {
	// 부모클래스인 Computer타입의 변수가 자식클래스인 Notebook타입의 객체를 참조 가능하다
    Computer notebook1 = new Notebook();
    
    // 하지만 자식클래스타입의 변수가 부모클래스타입의 객체를 참조하는건 불가능하다
    Notebook notebook2 = new Computer();	<= error
} 
 

dinamic binding (동적바인딩)

그렇다면 Computer클래스에 있는 toString이라는 이름의 메서드가 Notebook클래스에서도 overriding하여 존재한다면 notebook1변수는 어느 클래스에 있는 toString메서드를 참조할 것인가.
결론부터 얘기하면 Notebook객체를 참조하고 있으므로 Notebook클래스에 있는 toString()메서드를 참조하게 된다. 이를 dinamic binding이라고 한다.

profile
꿈을 꾸는 개발자

0개의 댓글