본문으로 바로가기

생성자

category onYouTube/Java 2021. 3. 24. 16:18
  • "생성자" : 클래스와 이름이 같은 메소드
  • 클래스가 생성될 때 자동으로 생성자가 제일 먼저 실행되도록 함
class Calculator {

	int left, right;
    
    	public Calculator(int left, int right) {
    
    		this.left = left;
        	this.right = right;
    	}
}

 

  • "기본 생성자" : 클래스 이름가 같으면서 매개변수가 없는 메소드
  • 사용자가 생성자를 자동으로 정의하지 않으면, 기본 생성자가 자동으로 생성됨
public class ConstructorDemo {

	public static void main(String[] args) {
    
		ConstructorDemo c = new ConstructorDemo();
	}
}
public class ConstructorDemo {

	public ConstructorDemo(int param1) {}
	// 매개변수가 있는 생성자
    
	public static void main(String[] args) {
    
		ConstructorDemo c = new ConstructorDemo();
		// 정의된 생성자가 존재하기 때문에 기본 생성자가 생성되지 않아서 매개변수가 없는 객체를 생성하면 에러가 발생함
	}
}
public class ConstructorDemo {

	public ConstructorDemo() {}
	// 매개변수가 없는 생성자
    
	public ConstructorDemo(int param1) {}
	// 매개변수가 있는 생성자
    
	public static void main(String[] args) {
    
		ConstructorDemo c = new ConstructorDemo();
	}
}

 

  • 매개변수가 있는 생성자와 함께 하위 클래스를 선언하면
    하위 클래스의 생성자를 호출하기 전에 상위 클래스의 기본 생성자를 자동으로 호출하기 때문에
    상위 클래스는 생성자가 아예 없거나(기본 생성자 자동으로 생성) 기본 생성자가 있어야 함
    (단, super( )를 사용할 경우 예외)

 

  • super( ) : 상위 클래스의 생성자
  • 상위 클래스의 생성자와 하위 클래스의 생성자 형태가 같을 때
    하위 클래스의 생성자 안에 super( )로 작성
  • 하위 클래스의 초기화 코드는 항상 super( )가 맨 앞에 위치해야 함
public SubstractionableCalculator(int left, int right) {

	super(left, right);
}

'onYouTube > Java' 카테고리의 다른 글

오버로딩 (Overloading)  (0) 2021.03.24
오버라이딩 (Overriding)  (0) 2021.03.24
유효범위 (Scope)  (0) 2021.03.24
클래스 멤버, 인스턴스 멤버  (0) 2021.03.24
입력과 출력  (0) 2021.03.24