본문 바로가기

4. Programming/4.1 JAVA

28 - Super와 부모 생성자

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