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 |