오늘은 챕터15 클래스의 상속2: 오버라이딩 에 들어간다.
두 클래스가 있는데, 이 두 클래스를 상속해야 도움이 되는 상황과 상속해도 도움이 되지 않는 상황이 있다.
기본적으로 IS-A 관계 라는 것이 성립해야 상속의 후보로 고려할 수가 있다고 한다.
is a => ~은 ~이다. 로 해석된다.
스마트폰은 피쳐폰이다.
하이브리드자동차는 자동차이다.
상속이 갖는 문법적 틍성은 IS-A 관계의 표현에 적합하다고 한다.
(당연한 소릴..)
다음은 오버라이딩.
오버라이딩은 전에도 한번 했지만 간단하게 요약하자면,
상위 클래스에서 정의된 메소드를 하위 클래스에서 다시 정의하는 것이다.
간단한 소스코드는 깃허브에 올려놨다.
github: https://github.com/jeong-jaehyeon/JavaProject/blob/javaExercise/src/MobileSmartPhoneRef.java
위 코드와 보다시피 phone2는 playApp() 을 실행할 수 없다.
왜냐면 SmartPhone형 참조 변수가 아니기 때문이다.
이렇게 설계한 이유는 크게 2가지가 있다고 하는데.
1. 실행 시간을 늦추는 결과로 이어질 수 있기 때문이다.
2. 참조변수의 형을 기준으로 접근 가능한 멤버를 제한하는 것은 코드를 단순하게 합니다.
이러한 형태의 판단이 속도가 굉장히 빠르다고 한다.
2.이 이유는 좋은 코드의 작성을 유도하는 언어가 아니란 측면에서라고 하는데, 자세한건 다음 챕터에서 알 수 있다고 한다.
내일은 이어서 메소드 오버라이딩에 관련된 개념들을 살펴보겠다.
오늘의 코멘트: 벌써 1월의 마지막 주..!