본문 바로가기

JAVA

[8] 상속

728x90

다른 언어와 같이 Java에도 상속이 있습니다.

 

상속

기존의 클래스를 바탕으로 새로운 클래스를 만드는 행위를 말합니다. Java에서는 이를 "클래스를 확장한다"라고 표현합니다.

상속을 하는 클래스를 "슈퍼 클래스", 상속을 받는 클래스를 "서브 클래스"라고 합니다.

 

상속하기

상속을 하기 위해서는 아래와 같이 extends 키워드를 사용합니다.

 

서브 클래스 객체 생성하기

상속받은 클래스의 객체를 생성하는 방법은 일반 클래스의 객체를 생성하는 것과 같습니다.

이렇게 생성된 객체는 Animal과 Herbivore의 멤버를 모두 갖습니다.

따라서 Animal의 메소드도 사용할 수 있습니다.

 

 

생성자 호출

상속된 클래스를 호출하면 생성자는 상속되지 않지만, 서브 클래스의 생성자보다 먼저 슈퍼 클래스의 인수없는 생성자가 호출됩니다.

이때, super( )를 사용하면 원하는 슈퍼 클래스의 생성자를 호출할 수 있습니다. super( )는 서브 클래스의 생성자 안에 작성합니다. 그리고, super( )안에 사용되는 인수는 해당 메소드가 속해있는 서브 클래스 생성자의 인수를 따릅니다.

 

 

this( ) vs super( )

this( )는 해당 클래스의 다른 생성자를 호출합니다.

super( )는 슈퍼 클래스의 다른 생성자를 호출합니다.

두 메소드 모두 생성장의 가장 윗 부분에 위치해야 하므로 this( )와 super( )는 동시에 사용할 수 없습니다.

 

 

서브 클래스 안에서 private 슈퍼 클래스 멤버에 접근하기

서브 클래스에서조차 슈퍼 클래스의 private멤버에는 접근할 수 없습니다. 슈퍼 클래스와 밀접한 연관이 있는 서브 클래스의 경우 이런 제약은 불편합니다. 따라서, 슈퍼 클래스의 멤버에 protected를 사용하면 클래스 외부에서의 접근은 막으면서 서브 클래스에서도 슈퍼 클래스의 멤버에 접근할 수 있습니다.

또, 슈퍼 클래스 뿐만 아니라 같은 패키지에 속하는 클래스에서도 접근할 수 있습니다.

 

728x90

'JAVA' 카테고리의 다른 글

[10] Object 클래스  (0) 2021.05.21
[9] 오버라이딩  (0) 2021.05.21
[7] 클래스 형 변수  (0) 2021.05.21
[6] 접근 제한  (0) 2021.05.21
[5] 클래스  (0) 2021.05.17