class가 인스턴스화 될 때 생성자가 실행 되면서, 객체를 초기화 함. 그 때 자신의 생성자만 실행이 되는 것이 아니고, 부모의 생성자 부터 실행됨.
Car 클래스
public class Car{ public Car(){ System.out.println("Car의 기본 생성자"); } }
Car를 상속 받는 Bus 클래스
public class Bus extends Car{ public Bus(){ System.out.println("Bus의 기본 생성자"); } }
테스트 클래스
public class BusExam{ public static void main(String args[]){ Bus b = new Bus(); } }
- 상단의 결과는 "Bus의 기본 생성자" , "Car의 기본 생성자" 가 전부 출력 됨
- new 연산자로 Bus의 객체를 생성하면, Bus의 객체가 메모리에 올라갈 때 부모인 Car도 함께 메모리에 올라감
- 생성자는 객체를 초기화 하는 일을 함
- 생성자를 호출될 때 자동으로 부모의 생성자가 호출되면서 부모 객체를 초기화 하게 됨
suepr
자기 자신을 가르키는 키워드가 'this' 라면, 부모를 가르키는 키워드는 'super'
- 부모의 생성자를 임의로 호출하지 않으면, 부모 class의 기본 생성자가 자동으로 호출 됨
부모의 기본 생성자가 아닌 다른 생성자를 호출하는 방법
- 클래스는 기본 생성자가 없는 경우도 존재
Car 클래스 // 매개 변수 추가
public class Car{ public Car(String name){
System.out.println("Car의 기본 생성자"); } }
Car를 상속 받는 Bus 클래스
public class Bus extends Car{ public Bus(){ System.out.println("Bus의 기본 생성자"); } }
Car 클래스의 기본 생성자가 없음으로 컴파일에서 오류가 발생 됨, 문제를 해결하기 위해서는 자식 클래스의 생성자에서 직접 부모 생성자를 호출해줘야 함
public Bus(){ super("소방차"); // 문자열을 매개변수로 받는 부모 생성자를 호출 System.out.println("Bus의 기본 생성자"); }
참고 : tryhellworld.co.kr
'4. Programming > 4.1 JAVA' 카테고리의 다른 글
30 - 클래스 형변환 (0) | 2016.06.27 |
---|---|
29 - 오버라이딩(overriding) (0) | 2016.06.20 |
27 - 추상 클래스 (0) | 2016.06.17 |
26 - 접근 제한자 (0) | 2016.06.16 |
25 - 상속 (0) | 2016.06.15 |