오늘 부터 상속을 공부하는데,
상속은 조금 나누어서 공부를 할 것이다.

완전한 이해가 필요하기 때문이다.

상속은 무엇일까?
-> 상속은 기존에 정의했던 클래스의 메소드, 변수들을 이어 받는 개념이다.

먼저 오늘은 상속의 문법, 사용법에 관해 공부했다.

상속
: 기존에 정의된 클래스에 메소드와 변수를 추가하여 새로운 클래스를 정의 하는 것.

표현으로는 상위 클래스, 하위 클래스가 있다.
* 상위클래스
: 기초 클래스라고도 한다. ( super class, base class )
: 원판이라고 생각하면 된다. 이제 이 클래스로 확장시켜 새로운 클래스를 만들 것이다.
: 상속할 대상의 클래스이다.

* 하위클래스
: 유도 클래스라고도 한다. ( sub class, derived class )
: 상속 받은 클래스이다. 상위 클래스의 메소드, 변수들을 이 하위클래스로 가져와 사용한다.

- 상위, 하위라고해서 헷갈린다면
  base class, derived class 라고 생각해도 된다.

사용법은
하위 클래스 선언시 상위 클래스를 언급해주면 된다.
예로 들면,
class sub extends super
{
...
}

이렇게 sub (하위클래스)를 선언할 때 extends super(상위클래스)를 적어주면된다.
여기서 sub, super는 클래스 이름이다.!!

그렇다면 상속을 할 때 초기화는 어떻게 될까?
초기화? 음 다시말하면 생성자는 어떻게 호출 될까?
-> 하위클래스의 생성자 속에 상위 클래스위 생성자를 부른다.
(그렇다고 생성자를 상속 받았다. 라는 의미는 아니다.)

부르는 방법은
super(전달 변수);
이렇게 전달한다.

예시로 문제를 적어보았다.
문제 14-1



(상속 예시)


문제를 풀고 작성한 코드인데,

여기서 Car -> HybridCar -> HybridWaterCar 이렇게 상속되었다.
보면 super() 를 통해 전달변수를 전달하여 각 상위클래스의 생성자를 호출하였다.



(실행 화면)


* 상위클래스의 생성자를 호출해야한다.
super를 이용해 상위클래스를 생성해야하는데 만약 super가 없다면
컴파일할때 자동으로 빈 super() 가 삽입된다.

* 상속과 접근제어 지시자
전에 접근제어 지시자 공부할 때 protected는 변수는 상속받은 클래스에서 까지 사용가능하다고 공부했었다. (다른 패키지에 존재할 지라도 상속관계에 놓이면 접근을 허용하는 접근제어 지시자 이다.)

* private 멤버는 간접적으로 접근해야한다.
-> 이 말의 뜻은 private 로 선언된 멤버는 직접 접근이 아니라 그 클래스의 호출을 통해 접근을 해야된다는 뜻이다. private으로 선언해 프로그램의 안전성을 높이는 것이 좋고 이 점을 생각하고 있어야한다.

(* 참조 - 난 정말 JAVA를 공부한 적이 없다구요, 윤성우)



+ Recent posts