본문 바로가기
tech documents/memo

[Java] 생성자

by kimtahen 2020. 7. 29.
반응형

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

 

상속과 생성자 - 생활코딩

편리함을 위해서 어떠한 기능을 수용하면 그 기능이 기존의 체계와 관계하면서 다양한 문제를 발생시킨다. 그 문제를 한마디로 줄여서 말하면 복잡도의 증가라고 할 수 있다. 이번 시간에는 생�

opentutorials.org

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

댓글