210124_JAVA

정재현·2021년 1월 24일
0

TIL

목록 보기
54/80

오늘은 상속과 생성자의 호출 문제와 14-2 클래스 변수, 클래스 메소드와 상속에 들어간다.

먼저 문제는
Car -> HybridCar -> HybridWaterCar
Car는 가솔린으로
HybridCar는 가솔린과 전기로
HybridWaterCar 가솔린과 전기와 물을 동시에 작동할 수 있는 차들을 표현한 클래스이다.

이 각각의 클래스에 적절한 생성자를 삽입하는 것이 문제였다.
물론 상속 관계를 고려하여 각 클래스 별로 필요한 생성자를 삽입하는 것이 포인트.

github: https://github.com/jeong-jaehyeon/JavaProject/blob/javaExercise/src/ExtendExercise.java

처음엔 문제 뜻을 잘 이해못했는데 super를 사용하란 걸 깨달았다.
super 사용이 아직 그렇게 익숙하진 않다는 걸 알았다.

다음은 클래스 변수, 클래스 메소드와 상속에 들어간다.
의외로 간단하게 두장에 걸쳐 서술되어 있다.

클래스 변수와 클래스 메소드는 앞에서 배웠던 것처럼 staitc 선언이 붙는 변수와 메소드다.
다시 한번 특징을 정리하자면,

  • 인스턴스의 생성과 상관이 없이 접근이 가능하다.
  • 클래스 내부와 외부에서(접근 수준 지시자가 허용하면) 접근이 가능하다.
  • 클래스 변수와 클래스 메소드가 위치한 클래스 내에서는 직접 접근이 가능하다.

자 그렇다면 클래스 변수와 클래스 메소드는 인스턴스에 속하지 않는 딱 하나만 존재하는 변수와 메소드라는 말인데~
그렇다는 것은 상속이 필요없는. 상속의 대상이 아니라는 말이다.

그럼

상위 클래스에 위치한 클래스 변수와 메소드에 하위 클래스에서 어떻게 접근하는가?

란 질문에는.
원래 사용하던 것처럼 변수의 이름만으로 접근이 가능하다.
단! 선언된 접근 수준 지시자가 허용하는 범위 내에서. (private는 안된다는 말.)

간단하게 예제를 보고 코드 상에서 이해해봤다.
github: https://github.com/jeong-jaehyeon/JavaProject/blob/javaExercise/src/SuperSubStatic.java

static 으로 선언한 i가
2번의 상위 인스턴스 생성과 1번의 하위 인스턴스 생성을 통해서
3이 호출되는 것을 볼 수 있다.

내일은 챕터15 클래스의 상속2번째: 오버라이딩 에 대해서 들어간다.

오늘의 코멘트: 좋아 오늘은 집중 잘했어~

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

0개의 댓글