티스토리 뷰

728x90
반응형

생성자 글에서도 적었지만, 부모 클래스가 기본 생성자를 가지고 있지 않으면

 

자녀 클래스의 생성자는 반드시 부모의 매개변수가 있는 생성자를 첫 줄에 호출해야 하며,

 

그렇지 않을 경우 컴파일 오류가 발생한다.

 

사실 부모가 기본 생성자를 가지고 있는 경우에도 자녀 클래스 생성자에서 호출해주어야 하는 건 같지만

 

이 경우에는 컴파일러가 알아서 추가해주기 때문에 명시적으로 할 필요가 없을 뿐이다.

 

왜 이런 귀찮은 작업을 수행해야 하는 걸까?

 

정답부터 말하자면 상속을 위해선 부모 클래스가 자녀 클래스보다 먼저 존재해야 하기 때문이다.

 

상속받은 클래스 멤버는 기본적으롤 부모 클래스에 속한 것이므로 부모가 먼저 존재하지 않으면

 

자녀 클래스에서 호출해 사용하는 것이 불가능하다.

 

따라서 반드시 자녀 클래스보다 부모 클래스가 먼저 호출되고 초기화되어야 하며,

 

자녀 클래스의 모든 행위 이전에 호출되어야 하므로 가장 첫 줄에 호출 코드가 위치해야 한다.

 

이상을 간단한 코드로 표현하면 아래와 같다.

public class Child extends Parent
{
	public int age;
	
	public Child(String name, int age)
	{
		super(name, age); // 매개변수가 있는 생성자의 경우
		this.age = age;
		...
	}
}

 

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/06   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
글 보관함