본문 바로가기

자바

생성자, Constructor

반응형

이전의 글에서 클래스, 객체지향이 무엇인가에 대해 다뤘습니다. 그리고 클래스의 객체를 정의하고 객체를 생성할 때 사용한다고 언급했습니다. 이 객체를 생성할 때 사용하는 것이 바로 생성자입니다.

 

생성자의 구조는 메서드와 비슷합니다. void나 리턴타입이 존재하지 않고 클래스명과 동일한 이름 가지게 됩니다.

 

 

lecture_constructor con = new lecture_constructor(); 라는 명령어를 통해 객체를 생성하게 됩니다. 메서드를 수행할 때 명령어를 보면 main에서 ToString();이라는 명령어를 통해 메서드를 실행하게 됩니다. 마찬가지로 new라는 명령어를 통해 객체를 생성하면서 lecture_constructor();라는 메서드와 동일한 생성자를 수행해 객체를 만들게 됩니다. 

 

생성자는 메서드와 비슷하다고 했습니다. 그래서 생성자도 오버 로딩이 가능합니다. 생성자를 조금 더 취향에 맞게 만들어 낼 수 있습니다.

 

커피를 예를 들어보면 커피는 에스프레소 부터 아메리카노, 라테, 카푸치노 등 샷의 개수, 물, 또는 우유를 얼마나 섞느냐에 따라 여러 가지 종류가 있습니다.

 

 

이제 클래스와 생성자를 통해 커피를 만들어 보겠습니다.

 

 

각 변수와 메서드를 통해 샷의 갯수, 컵의 크기, 설탕 추가 여부, 물, 우유를 섞을 수도 얼름을 타서 차갑게 마실수 있는 기능들이 선언되어 있습니다.

 

보통 뜨거운 아메리카노를 가장 즐겨 먹기 때문에 기본 생성자는 톨 사이즈(350ml) 의 따뜻한 아메리카노를 만들 수 있습니다. 

 

 

coffee1 아메리카노의 기본정보는 자바 원두에서 추출한 2샷(샷당 25ml)에 물 300ml를 섞은 350ml 용량의 설탕이 들어가지 않은 따뜻한 커피입니다. 

 

이번에는 케냐 AA 원두를 쓰고 샷이 4개 들어가고 우유를 탄 아이스라떼 벤티(450ml)를 만들어 보겠습니다.

 

 

coffee IceLatte = new coffee(4, 2, 2) 를 통해 케냐 AA 원두 샷 4개를 벤티 사이즈 컵에다가 담은 에스프레소가 만들어졌습니다.

 

하지만 제가 먹고 싶은 것은 아이스라테이기 때문에 얼름을 추가하고 우유를 추가해 만들어 보겠습니다.

 

메서드를 통해 얼음과 우유를 추가해 아이스 라테를 만들었습니다.

 

처음에 자바를 배울 때 coffee americano = new coffee(); 또는 coffee iceLatte = new coffee(4, 2, 2); 를 보며 coffee는 무엇이고 new coffee()는 무엇인가 모르고 씁니다. 앞에도 클래스 이름 뒤에도 클래스이름 헷갈리게 만드네 라고만 생각하지 않을까 싶습니다.  

 

하나 사실은 coffee();, coffee(4, 2, 2); 는 생성자라는 메서드였고 new 생성자와 결합해 객체를 만드는 명령어였습니다. 게다가 오버 로딩을 통해 생성자를 취향에 맞게 다듬을 수 있다는 사실을 알게 되었습니다.

 

생성자에 대해 조금 더 다루고 싶지만 이만하겠습니다. 클래스와 객체를 이해하는 데 있어 생성자를 잘 이해하는 것이 중요하다고 생각합니다. 생성자를 통해 실체를 만들 수 있기 때문입니다. 

 

반응형