Java/Base
[JAVA] 생성자
JungCw
2023. 8. 17. 19:53
생성자
클래스를 선언할 때는 다음과 같이 레퍼런스 type, 참조변수, new 연산자, 생성자가 사용된다.
Test myTest = new Test();
이러한 형태가 기본적으로 배우는 클래스 선언의 형태인데, 여기서 Test()는 기본 생성자라고 한다.
기본 생성자는 매개변수가 없는 생성자이며 사용자가 별도로 생성자를 만들지 않았다면 자동으로 생성된다.
public class Test{
public Test(){
System.out.println("기본 생성자");
}
public Test(int a){
System.out.println("매개변수가 있는 생성자, 매개변수 " + a);
}
}
생성자를 선언할 때는 생성자의 이름과 클래스의 이름이 같아야 한다.
super()
부모로부터 상속받은 자식 클래스는 부모 클래스의 모든 필드와 메소드들을 물려받는다.
하지만 부모 클래스의 생성자는 자식 클래스에게 상속되지 않는다.
그렇기 때문에 자식 클래스에거 부모 클래스의 멤버를 초기화하려면 부모 클래스의 생성자를 호출해야만 한다.
이때 사용하는 메서드가 super()이다.
부모 클래스의 생성자가 기본 생성자라면 자바 컴파일러에 의해 자식 클래스에서 생성자를 호출할 때 자동으로 super()메서드를 추가해준다.
다만, 부모 클래스에서 매개변수를 가지고 있는 생성자가 존재한다면, 사용자가 직접 자식 클래스에서 생성자를 호출할 때 부모 생성자 매개변수 인자에 맞춰 super()을 추가해주어야한다.
public class Test{
public Test(int a){
System.out.println("매개변수가 있는 생성자");
}
}
public class Test02 extends Test{
public Test02(){
super(10);
}
}