반응형
1.
package org.opentutorials.javatutorials.Inheritance.example4;
public class ConstructorDemo {
public ConstructorDemo(int param1) {}
public static void main(String[] args) {
ConstructorDemo c = new ConstructorDemo();
}
}
이 경우 매개변수가 '있는' 생성자를 정의 하였기 때문에, 자동으로 기본 생성자(매개변수가 없는 생성자)가 정의되지 않는다. 따라서 아래와 같이 기본 생성자도 정의해 주어야 한다.
package org.opentutorials.javatutorials.Inheritance.example4;
public class ConstructorDemo {
public ConstructorDemo(){}
public ConstructorDemo(int param1) {}
public static void main(String[] args) {
ConstructorDemo c = new ConstructorDemo();
}
}
출처 : opentutorials.org/course/1223/6126
2.
하위 클래스가 호출될 경우(인스턴트 생성시) 자동으로 상위 클래스의 기본생성자가 호출이 된다.
가. 상위클래스의 생성자 정의가 없는 경우 -> 이 경우에는 기본 생성자가 자동으로 생성되어 호출이 가능하다.
나. 상위클래스의 기본생성자 정의만 없는 경우, 매개변수 있는 생성자는 존재함 -> 이 경우에는 기본 생성자가 자동으로 생성되지 않는다. 따라서 호출이 불가능하다. 결론적으로 상위클래스에 기본생성자를 정의해주어야 한다.
3.
2-나 의 경우, 상위클래스에 기본 생성자를 정의해주어야 하는 불편함이 있다. 하지만, 하위클래스에서 super을 사용하여 상위 클래스의 생성자를 호출하는 경우, 기본 생성자를 정의해주지 않아도 오류 없이 작동한다.
반응형
'tech documents > memo' 카테고리의 다른 글
[Java] 접근제어자 (0) | 2020.07.30 |
---|---|
[Java] new 사용시 값 초기화 (0) | 2020.07.29 |
[Java] 클래스 (0) | 2020.07.29 |
[Gatsby] gatsby develop 오류 (0) | 2020.07.28 |
댓글