부모가 누구야?

eland·2024년 7월 4일

아무생각없이 제목을 적긴 했지만 궁극적인 물음은 실제로 저것과 같았다.

도대체 이 클래스, 부모클래스랑 어떻게 관계 되어있는거야?

상속과 관련하여 부모클래스와 자식클래스는 떨어뜨릴 수 없는 구조이고 이에 대한 관계를 명확히 알아야 한다고 생각했다.

수업을 듣는 도중 강사님 께서 다음과 같은 질문을 하셨고, 나는 아무 생각없이 썼었던 상속 관계 였지만 제대로 한번 고민을 해보기 시작했다.

첫번째 질문에 대한 답은 자식이 없으면 상속 관계 자체가 정의되지 않기 때문에 자식이 상속관계를 결정한다고 생각하였다.

두번째로는 생성자가 상속 되는가에 대한 문제였는 데, 이 문제에 대해서는 옆자리 동료와 함께 많은 고민을 했었다.
부모에서 생성한 생성자는 자식에서 super class를 통해 부모에서 만든 생성자를 불러오는 식으로 처리하였다.
나는 상속에 대해 새롭게 정의하지 않고도 사용할 수 있는 메소드를 상속이라고 생각했고 이처럼 생각한다면

class Child extends Parent {
	public Child(String str) {
		super(str);
		System.out.println("자식 생성자 호출");
	}
}

이런식으로 super를 통해 불러온 생성자는 상속된 생성자가 아니라고 생각하였다. 이는 추후 주말에 공부릍 통해 좀 더 알아보고 본문을 수정할 것같다.

마지막으로 세번째 질문에 대해서는 정말 간단하게 생각하면 extend라는 확장이라는 개념을 따라서 A가 부모 클래스이고
부모클래스의 필드와 메소드를 물려받아 거기서 기능을 확장하는 개념으로 상속을 생각한다면 자연스럽게 B가 자식 클래스가 될 것이라고
생각했다.

이 처럼 평상시에 코딩을 하면서도 아무 생각없이 짜던 코드에 관해서 조금만 생각해보면 생각보다 내가 아는 부분이 많이 없다는 것을 알게 되었다.

profile
더 이상 핑계를 댈 때가 아니다.

0개의 댓글