📟java/개발 이론정리

상속

하얀성 2023. 10. 23. 15:32
class TV {
	private int size;
	public TV(int a) {size = n;}
}
class ColorTV extends TV{
	private int colors;
	public ColorTV(int colors, int size) {
    	????????
		this.colors = colors;
	}
}

?????에는 뭘 채워야 size값을 초기화시킬 수 있을까?

여기서 쓰이는게 상속이다.

답:

super(size);

 

상속이란 부모 클래스의 생성자를 불러 오는 것이다.

마치. size라는 황금 레시피를 부모만 알고 있는 입장에서

 

자식이 그 비법을 아는 부모를 데려와서 그 부분을 만들도록 부탁하는 것이라 보면된다.

자식은 그저 클래스를 상속받았을 뿐 size라는 황금레시피의 값은 잘 모른다.

size를 쓰려면 부모라는 부모객체(생성자)를 모셔와야된다.

 

그럼 super(size); 여기의 size는 자식 생성자의 size이다. 

color 변수와의 충돌은 걱정할 필요가 없다.

private color을 통해서 자식이 개발한 고유의 지식이라 부모는 size만 size에 값을 주고 가면 되는 것이다.

 

황금 레시피 적절량을 부모가 전해주는게 아니다.

부모가 끝까지 자식한테는 안가르쳐주고 자기 고용해서 쓰라고 하고, 부모들은 자식이 부를 때마다 일하고 있는것이라 보면된다.

 


class A {
	public A() {System.out.println("A");}
	public A(int x) {System.out.println("A"+x );}
}
class B extends A{
	public B() {Super(100);}
	public B(int x) {System.out.println("B"+x );}
}
public class Ex{
	public static void main(String[] args) {
		B b = new B(11);
	}
}

결과

상황: 가족 기업을 운영하는 아버지(A)와 그의 아들(B)가 있습니다. 이 기업은 아버지가 설립했으며, 아들도 기업에 가입하여 일하고 있습니다.

아들(B)가 회사에 들어오면, 항상 먼저 아버지(A)의 사무실을 방문합니다. 왜냐하면 회사는 원래 아버지가 만든 곳이기 때문입니다. 이것은 자바에서 "모든 자식 클래스의 생성자는 부모 클래스의 생성자를 먼저 호출한다"는 개념과 일치합니다.

이제, 사무실에 두 가지 문이 있다고 가정해봅시다. 하나는 특별한 키(매개변수)가 필요한 문이고, 다른 하나는 누구나 열 수 있는 일반 문입니다. 아버지(A)는 두 문에 대한 지침을 남겼고, 특별한 키로 열 수 있는 문은 "A + 키의 번호"를 외치도록 지시했습니다.

어느 날, 아들(B)가 회사에 와서 자신의 일을 시작하려고 합니다. 그는 자신의 사무실로 바로 가지 않고 먼저 아버지의 사무실을 방문해야 합니다(자식 클래스 생성자가 부모 클래스 생성자를 호출). 그러나 그는 특별한 키를 가지고 오지 않았기 때문에, 일반 문을 통해 들어가 "A"만 외칩니다.

이 상황에서 "A"를 외치는 것은 public A() 생성자를 호출하는 것과 같습니다. 아들(B)은 특별한 키(매개변수) 없이 사무실에 들어갔기 때문에, 아버지(A)의 기본 생성자만 호출되는 것입니다. 이후에 아들(B)은 자신의 사무실로 가서 자신의 일("B11"을 외침)을 시작합니다.

이 비유를 통해, 자식 클래스(B)의 객체가 생성될 때 부모 클래스(A)의 기본 생성자가 먼저 호출되는 이유를 설명하고자 했습니다. 여기서 아버지(A)의 사무실 방문은 아들(B)의 작업을 시작하기 전에 이루어지는 필수적인 절차라고 볼 수 있습니다.

'📟java > 개발 이론정리' 카테고리의 다른 글

java GUI 코드들  (0) 2023.12.04
프로세스, 쓰레드 차이  (0) 2023.11.07
this || getter(값 불러오기. return사용), setter(값 변경 ,this사용)  (0) 2023.10.02
접근제어자  (0) 2023.10.01
레퍼런스와 스태틱  (0) 2023.10.01