[Java 개발] 제7회 상속(inheritance)

Java입문강좌

시작하며

여러분 안녕하세요!

DreamHanks의254cm입니다.

이번 시간에는 상속에 대해서 설명해 드릴 겁니다.

Java의 전체 기사는 여기를 클릭해 주세요.

이전 기사는 [Java 개발] 제6회 컨스트럭터에 대해서 배워봤습니다.

 

클래스의 상속

상속은 기존 클래스에 기능을 추가하거나 재정의하여 새로운 클래스를 정의하는 것입니다.

상속 클래스는「슈퍼 클래스」,「부모 클래스」라고 부르고

상속받은 클래스는「서브 클래스」,「아이 클래스」라고 부릅니다.

사각형은 정사각형, 직사각형, 마름모 등의 사각형이 있는데요,

위의 정사각형, 직사각형, 마름모는 사각형의 특성을 공유하고 있습니다.

하지만, 사각형의 특성 말고도 개별적인 특성을 갖고 있습니다.

클래스의 상속을 사각형에 비유하면 사각형은「부모 클래스」

정사각형, 직사각형, 마름모는「아이 클래스」이 되겠습니다.

 

샘플

동물을 부모 클래스로 개와 고양이를 아이 클래스로 프로그램을 만들면,

 

위와 같이 부모 클래스를 이용하여 아이 클래스를 만들 수 있습니다.

위 클래스를 다른 클래스에서 사용해 보면,

 

위와 같이 Dog 클래스와 Cat 클래스에 필드를 생성하지 않아도

Animal 클래스의 필드를 사용할 수 있습니다.

 

super

super이란?

super는 상속 클래스의 인스턴스를 참조하는 변수입니다.

this가 자신의 인스턴스를 참조하는 것과 비슷합니다.

 

샘플

 

위와 같이 super 키워드를 사용하면 부모 클래스 필드 또는 메서드에 접속할 수 있습니다.

 

 

this ()와 super ()

this ()이란?

this()는 컨스트럭터 안에서 다른 컨스트럭터를 호출하는 메서드입니다.

 

위와 같이 this() 키워드를 이용해 다른 컨스트럭터를 호출할 수 있습니다.

즉, 위의 this()와 this(taste)는 Lemon()과 Lemon(taste)과 같은 의미가 됩니다.

위 클래스를 아래와 같은 클래스로 생성하면,

실행 결과는

위와 같습니다.

※생성자는 클래스의 인스턴스가 생성 될 때 호출되므로,

인스턴스 생성이 끝나지 않은 시점에서 다른 처리가 있으면 오류가 발생하게 됩니다.

this()가 종료되기 전에는 인스턴스가 생성되지 않은 시점입니다.

즉 this() 앞에는 처리가 존재하지 않아야 합니다.

super ()이란?

super()는 super와 같이 부모 클래스의 컨스트럭터를 호출하는 키워드입니다.


위와 같이 super ()를 사용하면 부모 클래스의 생성자를 호출 할 수 있습니다.

아이 클래스가 생성 될 때, 아이 클래스는 부모 클래스의 요소를 사용하기 위해 부모 클래스의

생성자를 호출합니다.

지금까지의 예제에서는 부모 클래스의 생성자를

호출하는 예제는 위의 예제밖에 없지만, 문제없이 실행할 수 있었습니다.

왜냐하면, 아이 클래스의 생성자에는 super()가 숨겨져 있습니다.

따라서 위의 샘플과 같이 부모 클래스의 컨스트럭터가 디폴트 컨스트럭터가

혹은 인수를 가진 컨스트럭터가 아닐 경우, 아이 클래스에서

직접 부모 클래스의 생성자를 호출해야합니다.

샘플 1

 

샘플 2

 

샘플 3

 

끝으로

이번 기사는 이상입니다.

다음 시간에는 자바 배열을 배워보겠습니다.

방문해 주셔서 감사합니다.

 

 

コメント