생성자

turtle601·2021년 4월 8일
1

클래스의 인스턴스, 즉 객체를 만들 때마다 new 키워드를 사용한다.

동물 뽀로로 = new 동물();

new 클래스명()을 자세히 보면 열고 닫는 소괄호가 보인다. 이전에 사용했던 열고 닫는 소괄호는 메서드를 의미하는 것이었다. 클래스명에 붙은 소괄호는 뭔가 다른 뜻이 있는 걸까? 아니다 클래스명()도 메서드다. 단지 자바가 알아서 인자가 없는 기본 생성자를 자동으로 만들어 주었기 때문이다.

동물.java

package constructor02;

public class 동물{
// 평소 주석으로 된 동물()을 자바가 알아서 생성해준 것
//	public 동물(){
    
//    }
}

생성자 사용방법

  1. 개발자가 아무런 생성자도 만들지 않으면 자바는 인자가 없는 기본 생성자를 자동으로 만들어준다.

  2. 인자가 있는 생성자를 하나라도 만든다면 자바는 기본생성자를 만들어주지 않는다.

(2번 예시)
동물.java

package constructor03;

public class 동물{
	public 동물(String name){
    	System.out.println(name);
    }
}

Driver.java

package constructor03;

public class Driver02;
	public static void main(String args[]){
    	동물 뽀로로 = new 동물("뽀로로");
        동물 무명 = new 동물();
    }

동물 무명 = new 동물(); 에서 빨간줄이 표시되고 컴파일이 거부된다. 이는 인자가 있는 생성자를 생성하였기 때문에 기본생성자를 만들어주지 않기 때문이다.

profile
Programmer

0개의 댓글