본문 바로가기

Java/이론

[Java] 생성자

생성자(Constructor)

객체가 만들어질때 사전 작업이 하나 필요한데

바로 생성자를 만드는 작업입니다.

생성자는 리턴이 아예 없고, 메소드명이 클래스명과 같은 메소드입니다.

 생성자를 만들지 않으면 자바 컴파일러가 기본 생성자를

만들어버립니다.

반대로 기본 생성자를 건드리면 자바 컴파일러가 기본 생성자를

안만들어줍니다.

시스템이 자동으로 객체를 만들때가 있는데

이때는 기본 생성자를 사용합니다.

흔히 객체를 생성할 때

shoes s = new shoes();

이렇게 생성하는데

이떄 new shoes(); 부분이 

기본 생성자를 뜻합니다.

생성자를 오버로딩 하는 것도 가능합니다.

오버로딩된 생성자는 단축키를 설정해서 사용할 수 있는데

저 같은 경우는 

 

the selected type contains no field which may be initialized in a constructor

 

이런 에러가 떠서 해석해봤더니

 

static final String brand = "Nike";

static final int size = 250;

static String name;

static int price;

 

변수들이 모두 static으로 되어있어서

생성자가 변수에 접근을 못해서

오류가 났던 것이었습니다.

다시 static을 빼주고 만들면

 

public Nike(String name, int price) {

super();

this.name = name;

this.price = price;

}

 

이렇게 멤버 변수에 접근하여

생성자를 만들어줍니다.

여기서 super()는 생략 가능하고

자바의 최상위 객체인 Object의 생성자를

불러오는 역할을 합니다.

또한 주의할 점은

출력할 때는 this를 생략해도 되지만

생성자 안에서는 this를 꼭 사용해야 합니다.

생성자를 만든 후 main함수에서

파라미터를 다르게 하면  다른 값을 가지는

객체를 만들 수 있습니다.

 

Nike n = new Nike("나이키 제카마2", 197100);

Nike n2 = new Nike("나이키 스트럭처25", 154000);

n.print();

n2.print();

 

이런 식으로 파라미터를 다르게 생성하면

 

이름 : 나이키 제카마2

가격 : 197100

브랜드 : Nike

사이즈 : 250

이름 : 나이키 스트럭처25

가격 : 154000

브랜드 : Nike

사이즈 : 250

 

다른 변수를 가진 객체가 생성된 것을

확인할 수 있습니다.

 

정리하자면 생성자는 객체의

기본 템플릿 같은 것이라고

생각하면 좋을 것 같습니다.

기본 객체 템플릿에

파라미터를 넣어서 다른 객체를 만들 수 있는 것입니다.

 

'Java > 이론' 카테고리의 다른 글

[Java] 상속(Inheritance)  (0) 2024.12.12
[Java] A has B  (0) 2024.12.12
[Java] Static / Final  (0) 2024.12.11
[Java] JavaDoc  (1) 2024.12.11
[Java] Jar 파일  (0) 2024.12.11