생성자?
생성자랑 객체가 생성될 때 처음으로 호출이 되는 메소드 입니다.
Animal dog = new Animal();
이 코드 어디서 많이 보던 코드이죠?
new라는 키워드를 통해 객체를 만들떄 저런 식으로 계속 사용했습니다.
Animal dog = new Animal();
주황색으로 표시된 부분이 바로 생성자 입니다.
생성자는 몇가지 특징이 있습니다
1. 생성자의 이름은 클래스의 이름과 같다!!
2. 생성자는 리턴타입이 없다!!
특징대로 생성자의 이름이 클래스의 이름과 같죠?
그런데 여러분은 객체를 만들면서 생성자를 위의 그림처럼 적으셨나요?
우리가 생성자를 정의하지 않아도 자바는 기본적으로 저런식으로 생성자를 정의합니다.
물론 우리눈에는 보이지는 않지만요~
이것을 Default Constructor 즉, 디폴트(기본)생성자 라고 합니다.
기본생성자를 사용해서 간단한 예제코드를 보면
sogom객체를 만들고 생성자를 사용했죠?
생성자를 정의한 부분에 보시면 name변수에 sogom이라는 문자열을 넣어 놨습니다.
그리고 메인메소드에서 객체를 생성됨과 동시에 name변수에는 sogom이 들어가게됩니다.
출력해보니 sogom이 출력되었네요.
생성자는 객체가 생성 될 때 처음으로 호출되는 메소드라고 하였습니다.
메소드!
메소드!!
그러면!!!!
매개변수를 가지고 있을수도 있지 않을까요!?
그렇습니다. 생성자에게 매개변수가 있는 경우가 있습니다.
바로 예제로 보시죠.
빨간색 박스로 표시한 부분이 제가 소스를 바꾼 부분입니다.
20이라는 숫자를 넣었습니다. 그러니 Person(int age) 생성자를 호출하는거죠.
출력해보니 20으로 초기화가 되어있네요.
그러면!!!!
오버로딩도 가능하지 않겠습니까~?
가능합니다!!
상황에 맞게 생성자를 활용 할 수 있다는 겁니다!!
빨간색 박스가 제가 수정한 부분입니다.
위와 같이 오버로딩도 가능합니다
위의 소스를 보다보면 this.name = name; 이라는 부분에서 this가 뭐하는 친구인지 궁금하지 않으신가요?
this는 다음 포스팅에서 같이 공부하겠습니다.
생성자 정리!!
☞ 생성자는 객체의 생성과 동시에 자동으로 호출되는 메소드이다
☞ 생성자의 이름은 클래스의 이름과 동일해야 한다
☞ 생성자는 리턴을 가지지 않는다
☞ 생성자도 오버로딩이 가능하다
'프로그래밍 > Java' 카테고리의 다른 글
[Java] 16. 상속(Inheritance) (0) | 2015.04.08 |
---|---|
[Java] 15. this (0) | 2015.03.30 |
[Java] 13. 메소드 오버로딩(Method Overloading) (0) | 2015.03.21 |
[Java] 12. 클래스변수 / 인스턴스변수 / 지역변수 (8) | 2015.03.20 |
[Java] 11. 배열(Array) 조금 더 알아보기 (0) | 2015.03.11 |