RSS
생성자
http://devdream.net/E
DevDream(175.123.***.***)
2018.08.16 12:03:30

변수 Int a; 선언을 하고 a=3; 으로 초기화 한다.

클래스도 변수 처럼 초기화를 해 줄 수 있다. 그 초기화 대상은 인스턴스 변수 이다.


생성자를 사용하는 방법을 알기 전에 왜 "클래스 초기화"라는 개념의 생성자를 사용해야 하는가?

아무것도 모르는 상태에서 클래스의 인스턴스 변수를 초기화 한다면 이렇게 할 것입니다.

'판매자' 클래스를 생성했다. 인스턴스 변수인 applePrice, numapple, mymoney를 초기화 할 것이다.

각각의 인스턴스 변수에 접근해서 값을 넣어 주었다. 이 무슨 미련 곰탱이 같은 짓인가.

이러한 짓은 "객체 지향 프로그래밍"에 아주 적합하지 않은 행동이다.

객체 ( 클래스 ) 를 "지향" 한다는 건 적극적으로 활용하여 효율적이고 간단하게 만드는 건데 이건 거의 불법수준이다.

다른 생각을 해볼 수 도 있다. 초기화 메소드 라는 것을 만들어서 입력하면 되지 않은가?

위에 접근보다는 나은 생각이지만 이것도 결국 2줄로 표현해야 한다. 더군다나 프로그램의 안정성을 보장해주는 Final 을 사용 하면 오류가 난다. Final은 한 번의 초기화 기회를 갖기 때문이다.

이러한 문제점을 해결하고자 자바는 "생성자"라는 것을 만들었다.

정의하자면 생성자란, 딱 한번만 호출이 되는 메소드 이다.





생성자는 해당 클래스 안에 메소드로 존재한다. 생성자 메소드를 살펴보자.

보면 다른 메소드들과 다른 특징이 있다.

1. 클래스 이름과 동일한 이름을 가진 메소드

2. 반환형이 선언되어 있지 않으면서, 반환하지 않는 메소드

즉, 메소드 이름이 클래스명과 똑같고, void나 int 처럼 반환형이 선언되어 있지도 않고 , return 반환을 하지도 않는다. 입력만 있을 뿐 출력은 없다. 초기화만 해주는 것이다.

예제에 적용시켜 보면

그리고 중요한 점은 , 생성자로 초기화 할 시 Final 변수도 메소드 안에서 딱 한번 초기화가 가능하다는 것이다.





출처 : https://m.blog.naver.com/tnsehf12345/220530411249