728x90

생성자

생성자는 class명과 동일한 메소드를 만들어서 자동으로 객체생성과 동시에 실행된다.
상속을 받은 클래스의 경우 super(); 즉, 부모클래스의 생성자를 우선 호출하며, 생략해도 된다.
아래의 예시에도 청둥오리를 생성했을 때, 그 부모인 생물, 동물, 오리 순으로 먼저 생성자가 실행 된 후 청둥오리가 실행되는 것을 확인 할 수 있다.

package com.ll;

public class Main {
    public static void main(String[] args) {
        System.out.println("== 청둥오리객체 생성시작 ==");
        new 청둥오리();
        System.out.println("== 청둥오리객체 생성끝 ==");
		/* 출력
		== 청둥오리객체 생성시작 ==
		생물이 생성되었습니다.
		동물이 생성되었습니다.
		오리가 생성되었습니다.
		청둥오리 생성되었습니다.
		== 청둥오리객체 생성끝 ==
		*/
    }
}

class 생물 {
    생물() {
        // 이 함수는 부모 클래스 생성자를 자동으로 호출합니다.
        System.out.println("생물이 생성되었습니다.");
    }
}
class 동물 extends 생물 {
    동물() {
        // super(); // 부모 클래스의 생성자를 호출합니다. 생략가능합니다.
        // 이 함수는 부모 클래스 생성자를 자동으로 호출합니다.

        System.out.println("동물이 생성되었습니다.");
    }

}
class 오리 extends 동물 {
    오리() {
        System.out.println("오리가 생성되었습니다.");
    }
}

class 청둥오리 extends 오리 {
    청둥오리() {
        System.out.println("청둥오리가 생성되었습니다.");
    }
}

생성자를 작성하지 않아도 자동을 생성자가 실행된다. 위의 예시에서 청둥오리의 생성자를 만들어두지 않아도 청둥오리의 생성자가 생성되며, 이때도 부모클래스의 생성자를 자동으로 호출한다. 따라서, 청둥오리의 생성자가 없더라도 생물, 동물, 오리가 생성되었다는 출력문을 확인할 수 있다.

728x90

'개발자 공부 > JAVA' 카테고리의 다른 글

테킷 - Mission project  (0) 2023.11.08
Map, json, 접근제어자, gradle  (0) 2023.10.27
숙달학습  (2) 2023.10.23
상속  (0) 2023.10.23
메모리  (0) 2023.10.23

+ Recent posts