super(), super(변수) 생성자

Moon·2024년 3월 7일

Java

목록 보기
24/45
  • 부모의 기본 생성자만 상속할 때: 자식 안에서 super()안써도 부모 생성자 저절로 호출 + 자식 생성자 호출.
  • 부모에서 변수 생성자 상속할 때: 자식 안에서 super(변수) 쓰면 부모 변수 생성자 호출 + 자식 변수 생성자 호출.
  • 자식 안에서 super(변수) 안쓰면 부모 기본 생성자 저절로 호출 + 자식 생성자 호출.

객체가 생성될 때 반드시 생성자를 실행하고 생성됌.

자식 객체가 생성될 때 부모 생성자를 실행 -> 자식 생성자를 실행.

내가 태어나기 위해서는 반드시 부모가 먼저 태어나야함.

메모리에 car객체가 올라가고 truck객체가 올라감.

public class Car {
	//생성자는 리턴 없음. (메소드는 있음)
	public Car() {
		System.out.println("Car의 기본 생성자"); //[A]
	}

	public Car(String name) {
		System.out.println("Car의 name 생성자"); //[B]
	}
	
	public void drive() {
		System.out.println("1. let's drive a car");
	}
	
}
public class Truck extends Car {
	public Truck() {
		super(); //안써도 됌. 컴파일러는 자동으로 super();를 호출해서 부모의 기본 생성자를 호출했음.[A]
//		super(name); //그렇다면 왜 굳이 super()쓰나? [B]
//		만약 부모가 기본 생성자 super() 없고 변수 쓰는 생성자만 있을 때에는 super(변수)해줘야 함.
		
		System.out.println("Truck의 기본 생성자 ");
	}

}
public class TruckRunner {

	public static void main(String[] args) {
		Truck truck = new Truck();
		
		truck.drive();
		
		/*
		- truck이 인스턴스화 될 때 (메모리에 올라갈 때) 부모인 car 객체도 메모리에 올라감.
		- 부모가 먼저 생성됌 => 그래야 자식도 생성됌.
		- 생성자가 하는 일: 객체를 초기화하는 일
		- 생성자가 호출됄 때 자동으로 부모의 생성자도 호출돼면서 부모객체를 초기화함.
	 	- super는 부모 객체를 나타내는 키워드.
	 	- super() 라고하면 부모 생성자가 호출됌.
		*/	

//		Car car = new Car();
	}

}

0개의 댓글