- class가 인스턴스화 될때 생성자가 실행되면서 객체의 초기화를 한다.
그 때 자신의 생성자만 실행이 되는것이 아니고, 부모의 생성자부터 실행된다.
public class Car{
public Car(){
System.out.println("Car의 기본생성자입니다.");
}
}
public class Bus extends Car{
public Bus(){
System.out.println("Bus의 기본생성자입니다.");
}
}
public class BusExam{
public static void main(String args[]){
Bus b = new Bus();
}
}
//결과 : Car의 기본생성자입니다. Bus의 기본생성자입니다.
public Bus(){
super(); //위에서 super()를 호출하지 않을때와 결과가 같다.
System.out.println("Bus의 기본생성자입니다.");
}
public class Car{
public Car(String name){
System.out.println(name + " 을 받아들이는 생성자입니다.");
}
}
public Bus(){
super("소방차"); // 문자열을 매개변수로 받는 부모 생성자를 호출하였다.
System.out.println("Bus의 기본생성자입니다.");
}
super 키워드는 자식에서 부모의 메소드나 필드를 사용할 때도 사용한다.
public class Car {
String name;
int number;
public Car(String name, int number) {
this.name = name;
this.number = number;
}
}
public class Bus extends Car {
int fee;
public Bus(String name, int number, int fee) {
super(name, number); //super를 이용해서 Car클래스의 생성자를 이용
this.fee = fee;
}
}
public class BusExam {
public static void main(String[] args) {
Bus bus = new Bus(new String("뛰뛰"), 3000, 1050);
if(!bus.name.equals("뛰뛰")){
System.out.println("bus의 name이 다릅니다.");
}
else if(bus.number != 3000){
System.out.println("bus의 number가 다릅니다.");
}
else if(bus.fee != 1050){
System.out.println("bus의 fee가 다릅니다.");
}
else{
System.out.println("정답입니다. [제출]을 누르세요.");
}
}
}