JAVA

[JAVA] 클래스의 상속 1 : 기본 (자바 독학하기16)

자라는레몬 2021. 7. 5. 22:54
반응형

상속의 목적은 다음과 같다.

 - 연관된 일련의 클래스들에 대해 공통적인 규약을 정의

이 내용은 상속을 배워가면서 차차 생각해 나가야 한다.

 

상속의 가장 단순한 설명은 다음과 같다.

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

 

상속은 다음과 같이 표현된다.

A 라는 클래스를 B 라는 클래스가 상속 받는다고 하면

class B extends A{}

이렇게 상속을 하게되면 A 에서 선언된 변수와 메소드를 B 에서 별다른 선언 없이 사용할 수 있다.

이때 A 를 상위 클래스, 기초 클래스, 부모 클래스 라고 부르며(superclass (parent)) ,

B 를 하위 클래스, 유도 클래스, 자식 클래스 라고 부른다(subclass (child)).

 

인스턴스 변수의 초기화를 위한 생성자가 상속시에 어떻게 적용될지 살펴본다.

위의 코드와 같이 코드를 구성하여 다음을 알 수 있다.

 - 하위 클래스를 호출 하였을 시에 상위 클래스의 생성자와 하위 클래스 생성자가 모두 호출된다.

 - 상위클래스의 생성자가 먼저 호출되고 하위 클래스의 생성자가 나중에 호출된다.

 

상위 클래스를 명시적으로 호출하는 방법도 있다.

바로 super 라는 키워드를 사용하면 된다.

위 코드와 같이 line 21 에 super(); 를 삽입하였고 이 키워드가 상위 클래스의 생성자를 호출하는 역할을 한다.

보통 이 키워드를 적지 않으면 컴파일러에서 자동으로 해당 키워드를 삽입하여 호출한다.

 

또한 자바는 프로그램이 과도하게 복잡해지는 것을 막기 위해 단일 상속만을 지원한다.

하나의 클래스에 하나의 클래스만 상속 가능하다는 뜻이다.

하지만 상속의 depth 를 더하는 것은 가능하다.

Class A{}

Class B extends A{}

Class C extends B{}

...

과 같이 구성 할 수 있다.

 

static 선언이 붙은 클래스 변수와 클래스 메소드는 

 - 인스턴스의 생성과 상관없이 접근 가능

 - 클래스 내부와 외부에서 접근 수준 지시자가 허용하면 접근 가능

 - 클래스 변수와 클래스 메소드가 위치한 클래스 내에서는 직접 접근 가능

하다는 특성이 있기 때문에 인스턴스에 속하지 않고 딱 하나만 존재한다.

따라서 상속의 대상이 아니다.

반응형