다형성: Polymorphism
객체지향 에서 가장 중요한 개념으로써
수퍼클래스 타입의 변수가 서브클래스 타입의 객체를 참조할 수 있다.!
Computer theComputuer = new Notebook()
컴퓨터 타입의 변수 theComputer가 Notebook 타입의 객체를 참조하고있다.
그것이 문법적 오류가 아니라는것!
왜 이런 규칙을 허용을할까???
실제로 어떤 의미를 가지는것일까?
Computer 클래스
Notebook 클래스
두 클래스모두 toString()이라는 메서드를 가지고 있다.(오버라이딩)
Computer test = new Notebook("Dell","15",4,1000,3.2,15.6,1.2);
System.out.println(test.toString());
메인함수에서
이렇게 한다면 어떤 메서드가 호출될까?
두가지 의견이 있을 수 있다.
1. test라는 변수는 Computer 형식이니까 Computer의 toString()이 호출되어야 마땅하다.
이것은 정적바인딩이라고 한다.
2. 어찌되었건 실제 객체로 가리키게 되는것은 Notebook형식이기에 Notebook의 toString()이 호출되어야 마땅하다.
이것은 동적바인딩이라고 한다.
자바에서는 항상 동적 바인딩을 하기때문에 2번 의견이 맞다!
'알고리즘 with 자바 > 자료구조' 카테고리의 다른 글
| 클래스 object와 Wrapper 클래스 (0) | 2021.07.06 |
|---|---|
| 스케줄러 프로그램 (0) | 2021.07.01 |
| 상속 2 (0) | 2021.06.29 |
| 상속 1 (0) | 2021.06.29 |
| static 그리고 public 2 (0) | 2021.06.28 |