프로그래밍/Java

8. [Java] Class 개념 + 사용 방법(feat. eclipse) 두번째 : 생성자(Constructor) - 코딩도치

코딩도치 2019. 11. 28. 22:19
반응형

안녕하세요. 코딩도치 입니다~

 

오늘은 저번 시간에 이어 Class 사용 방법에 대해서 좀 더 알아보도록 하겠습니다.

 

저번 시간에 Class를 붕어빵 틀에 비유하면서 설명을 했었는데요.

2019/11/25 - [프로그래밍/Java] - 7. [Java] Class 개념 + 사용 방법(feat. eclipse) - 코딩도치

 

7. [Java] Class 개념 + 사용 방법(feat. eclipse) - 코딩도치

안녕하세요. 코딩도치 입니다~ 오늘은 Class에 대해서 알아보고 실습까지 진행해보도록 하겠습니다! 1. Class란 앞서 객체 지향 프로그래밍에 대해서 포스팅을 했었습니다. 객체 지향 프로그래밍에 대한 이해가 선..

codingffler.tistory.com

 

붕어빵 틀은 팥을 넣으면 팥 붕어빵을, 슈크림을 넣으면 슈크림 붕어빵을 만들 수 있었습니다.

 

그러면 하나의 Class를 가지고 여러 속성을 가진 객체를 생성할 수 있어야겠죠?

 

직접 여러 객체를 생성해 보도록 하겠습니다.

저번 시간에 이어서 main 메서드(함수)에 you라는 객체를 생성하고, 이름을 출력하도록 소스를 작성하였습니다.

 

어떤 이름이 출력될까요?

 

네, 바로 me 객체와 동일한 '코딩도치'가 출력되었습니다.

 

현재로써는 아무리 객체를 많이 생성해도 코딩도치 이름을 가진 객체만 생성할 수 있을 뿐입니다.

 

이유가 무엇일까요?

 

붕어빵을 만들 때는 팥을 넣어주거나 슈크림을 넣어주었습니다.

 

하지만 사람 객체를 생성할 때는 어땠나요? 아무런 속성 값도 넣어주지 않았습니다.

 

그러니 동일한 속성 값을 가진 객체가 생겨나는 것이 당연하겠죠?

 

이렇게, 객체를 생성할 때 객체의 속성값을 직접 넣어줄 수 있도록 하는 것생성자(Constructor)라는 것입니다.

 

생성자(Constructor)는 Class를 통해 객체를 생성할 때 반드시 호출되고 가장 먼저 실행되는 일종의 메서드(함수)입니다.

 

생성자(Constructor)는 Class를 구성하면서 따로 구현하지 않아도 기본적으로 생성됩니다.

 

그래서 위에서 만든 Person Class를 통해서 객체를 만들 수 있었던 것입니다.

 

하지만 기본적으로 구현되는 생성자(Constructor)로는 다양한 속성 값을 가지는 객체를 생성할 수 없습니다.

 

그럼, 생성자(Constructor)를 입맛에 맞게 구현해볼까요?

생성자(Constructor)는 위와 같이 Class 안에 Class명과 동일하게 메서드를 작성하는 것처럼 구현할 수 있습니다.

(하지만, 메서드와는 엄연히 다른 것입니다!)

 

저는 이름 속성을 넣어줄 수 있는 생성자(Constructor)를 만들어 보았습니다.

(소스에 this라는 것이 보이는데요. 이것은 객체 자기 자신을 가리키는 표현입니다.

이에 대한 설명은 다음에 더 자세히 하도록 하겠습니다!)

 

Class명과 꼭 동일해야 한다는 것을 주의해주세요~

이렇게 작성하고 보니,

 

Main Class에서 공포의 엑스박스가 떠버렸네요.

 

하지만 당연한 것이니 당황하지 마세요~

 

사실 객체를 생성할 때 사용하는 new Person()이 바로 생성자(Constructor)입니다.

 

앞서 Person의 생성자(Constructor)를 입맛에 맞게 바꿔버렸으니,

 

기존에 사용하던 생성자를 사용할 수 없는 게 당연한 것입니다.

 

다양한 생성자(Constructor)를 여러 개 생성할 수 있기 때문에,

 

기본적으로 사용할 수 있었던 생성자도 추가해 주도록 하겠습니다.

똑같은 방식으로 생성자(Constructor)를 구현하면 되는데,

 

생성자(Constructor) 내부에 어떠한 내용도 작성하지 않으면, 기본 생성자가 생성되는 것입니다.

 

생성자(Constructor)의 역할은 바로 객체 속성 값의 초기화입니다.

 

제가 구현한 생성자(Constructor)는 name 속성 값을 원하는 값으로 초기화시키는 역할을 하는 것이죠.

 

초기에 설정한 값 이외에 다른 값으로의 초기화가 필요하지 않을 경우도 있기 때문에,

 

초기 설정값 그대로 객체를 생성해주는 기본 생성자를 구현해 놓는 것이 좋은 코딩 습관입니다!

 

이제 각각의 생성자들을 Main Class에서 이용해 볼까요?

me 객체는 제가 처음에 설정한 '코딩도치' 이름을 그대로 가지는 객체로 생성하고 싶어,

 

기본 생성자 new Person()으로 객체를 생성해주었습니다.

 

you 객체는 '코딩물개' 라는 이름을 가진 객체로 생성해 보도록 하겠습니다. 

 

그러려면 이름값을 초기화해주는 새로 만든 생성자를 이용해야겠죠?

 

사용법은 간단합니다.

 

Person(String name) - String 값의 파라미터를 넘겨주면 되는 것입니다.

 

new Person("초기화하고 싶은 값")과 같이 사용할 수 있습니다. - new Person("코딩물개")

 

생성자는 여러 개 생성할 수 있지만, 각각의 생성자는 유일해야 합니다!

 

동일한 생성자를 두 개 만들 필요도 없을뿐더러, 만약 두 개가 있다면 어떤 생성자를 사용해야 하는지 알 수가 없겠죠?

 

이제 출력된 me와 you 객체의 이름을 확인해 볼까요?

 

me 객체의 이름은 코딩도치, you 객체의 이름은 코딩물개로 잘 출력되었네요!

 

이렇게 저번 시간에 이어서 Class의 사용방법 - 생성자(Constructor)에 대해서 알아보았습니다.

 

점점 더 Java에 대한 흥미가 생기지 않나요?

 

그럼 다음 시간에는 main이라는 것에 대해서 알아보도록 하겠습니다!

 

감사합니다.

반응형