210125_JAVA

정재현·2021년 1월 25일
0

TIL

목록 보기
55/80

오늘은 챕터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. 참조변수의 형을 기준으로 접근 가능한 멤버를 제한하는 것은 코드를 단순하게 합니다.
  1. 자바는 메소드 호출 시 참조변수의 형(Type)을 참조하여 그 메소드의 호출이 옳은 것인가 판단한다.
    -> phone2.answer(); -> phone2가 MobilePhone형이므로 해당 클래스의 메소드 answer는 호출 가능함!

이러한 형태의 판단이 속도가 굉장히 빠르다고 한다.

2.이 이유는 좋은 코드의 작성을 유도하는 언어가 아니란 측면에서라고 하는데, 자세한건 다음 챕터에서 알 수 있다고 한다.

내일은 이어서 메소드 오버라이딩에 관련된 개념들을 살펴보겠다.

오늘의 코멘트: 벌써 1월의 마지막 주..!

profile
"돈받고 일하면 프로다"

0개의 댓글