키보드워리어

【자바】자바 생성자 소개 본문

JAVA/입문

【자바】자바 생성자 소개

꽉 쥔 주먹속에 안경닦이 2022. 11. 15. 14:38
728x90

안녕하세요 【키보드 워리어】

 

⌨🗡🧑


블로그 방문자 여러분, 안경닦이입니다.

 

오늘 포스팅에서 나오는 메서드와 코드들은 이전 포스팅에서 이어져오는 것이기에 이전 포스팅을 참고 부탁드립니다.

2022.11.09 - [JAVA 완전정복!!/JAVA section 8 - 객체지향 프로그래밍 소개] - 【자바】캡슐화의 기본이해 - 2

 


생성자란?

객체지향 프로그래밍의 또 다른 주요 개념인 ‘생성자’는 해당 객체의 초기값을 지정해줄때 사용합니다.

 

인스턴스화로 객체 생성시 setSpeed메서드 없이도 인자 값을 전달해주고 싶다면 생성자를 사용하세요.

 

 

 

생성자 사용하는 법은?

생성자는 반환 타입을 필요로 않기 때문에 리턴타입을 지우고 클래스와 동일한 이름을 가진 메서드를 만들면 돼요.

생성자 자동으로 만들어주는 constroctor기능
생성자 자동으로 만들어주는 constroctor기능

 

setter와 getter 메서드처럼 마우스 우클릭 > source > constructor를 클릭하면 생성자를 자동으로 만들 수 있어요.

 

MotorBike클래스 생성자
MotorBike클래스 생성자

생성자를 처음 만들어 보았어요! 이제 MortorBike를 인스턴스 할 때 오류가 떴죠?

그건 생성자를 무조건 입력해주어야 하기 때문입니다.

 

생성자를 입력하지 않아 오류가 뜬 모습
생성자를 입력하지 않아 오류가 뜬 모습

생성자를 생성하고 인자값을 넣지 않으면 잘 되던 코드들도 이제는 오류가 뜹니다.

(참고로 생성자를 생성하지 않고 인스턴스 할 때 speed변수의 기본값은 0이 됩니다.)

 

생성자를 생성하고 인스턴스하면 speed 입력값을 꼭 입력해주어야 합니다.

생성자를 제공했기 때문에 자바 컴파일러는 디폴트 생성자를 주지 않습니다.

 

 

자바 생성자 연습문제

 

jshell로 확인할 수 있는 생성자 특징
jshell로 확인할 수 있는 생성자 특징

 

참고로 jshell에서 확인할 수 있는 것은 디폴트 생성자입니다.

 

생성자를 만들어주어도 입력값을 입력하지 않아도 작동합니다.

 

jshell에서 확인 할 수 있는 생성자
jshell에서 확인 할 수 있는 생성자 특징2

 

 하지만 생성자를 작동하는 모습은 확인해볼 수 있습니다.

 

일단 기억할 것은 

new 키워드로 새 객체를 만들때 호출만 하면 자바 컴파일러는 디폴트 생성자를 제공한다는 겁니다.

(jshell의 Class cart처럼)

 

 

하지만 생성자를 생성하는 순간 자바 컴파일러는 디폴트 생성자를 제공하지 않습니다.

내가 직접 값을 정하고 싶다면 다시 Book(){}와 같은 인자 없는 생성자를 제공해야 합니다.

 

같은 클래스에 생성자를 또 만든 모습
같은 클래스에 생성자를 또 만든 모습

 

여기서 첫 번째 생성자의 this는 다른 생성자를 콜 하기 위해 사용되었습니다

 

 

 

 

 

 

 

 

 

728x90