이전 글에서 클래스에 어느정도 다뤄보았는데, 클래스의 생성자라는 것이 있습니다.
알게 모르게 써왔던 것들인데 그것은 클래스의 생성자입니다.
클래스의 생성자는 클래스의 이름과 똑같은 이름을 가진 메서드입니다.
생성자는 리턴 타입을 지정하지 않고 새로운 인스턴스를 생성할 때 new와 함께 생성자를 호출합니다.
생성자 호출 예시 :
노란 부분이 생성자를 호출하고 있는것이고, 참조변수 o 에 생성자에 지정한 값들을 전달하게 되는데
내부에 생성자를 정의하지 않은 클래스는 보이지 않는 자동 기본 생성자가 생성이 됩니다.
생성자는 일반적으로 이런식으로 작성합니다.
클래스 이름과 동일하게 작성한 이 메서드는 생성자입니다.
또, 내부에 아무것도 들어가 있지 않기 때문에 기본 생성자 라고 볼 수 있는데요
기본 생성자는 별도의 생성자를 따로 생성하지 않았던 경우에는 생략이 가능합니다.
별도의 생성자를 생성한 경우엔 기본생성자를 작성하고 싶은 경우 명시적으로 작성해야 합니다.
기본 생성자는 왜 만들어지는가?
하나의 클래스에는 반드시 하나 이상의 생성자가 존재해야 합니다.
그렇기 때문에 개발자가 생성자를 따로 생성하지 않는 경우
컴파일러가 자동으로 생성자를 생성합니다. (눈에 보이지 않는 자동 기본 생성자)
new Orange(매개변수); 에서 매개변수가 값을 매개해서 Orange에 전달,
Orange 에 전달 된 값은 생성자에 정의된 대로 코드를 읽어들입니다.
생성자는 왜 사용하는가?
생성자는 코드의 반복을 줄이고, 인스턴스 변수 생성과 동시에 변수 값을 초기화하기 위함입니다.
생성자를 사용하면 코드의 중복을 줄일 수 있고 객체마다 어떤 값을 가지고 있는지 빠르게 볼 수 있어 유용합니다.
생성자는 overload (오버로드) 될 수 있다.
오버로드라는 용어는 전산학 기준으로 사용됩니다.
생성자도 하나의 함수(메서드) 이고, 입력하는 방식에 따라 여러가지 동작이 가능하게 된다는 것 입니다.
부연설명을 위해 위의 사진 3과 똑같은 사진을 다시 붙여넣었는데요,
이 오렌지 클래스 생성자 내부에 인자값을 넣는 공간에 여러 형태로 넣을 수 있는 것을 볼 수 있습니다.
이런식으로 생성자를 여러개 만들어서 여러 형태의 값을 적재할 수 있도록 하는것을
생성자의 오버로딩이라고 합니다.
다만 단점으로는 개발자들은 협업으로 코드를 짜게 되는데,
비슷한 기능의 메서드가 아닌데 동일한 이름을 사용해서 오용해서 사용할 시에 코드를 이해하기가 어렵습니다.
참조 )
생성자를 오버로딩 시킬 때에는 동일한 형태로 동일한 참조값을 넣어
인자값을 받는 함수가 여러개 존재하면 자바 컴파일러가 인식을 못합니다.
'Java (국비지원 당시 공부했던 글) > OOP (Java)' 카테고리의 다른 글
[자바] OOP - 5. 상속 (객체의 다형성과 캐스팅) (0) | 2022.05.30 |
---|---|
[자바] OOP - 4. 상속 (상속 개념과 super, 오버라이드) (0) | 2022.05.27 |
[자바] OOP - 3. static과 변수 선언위치, 생성시기 (0) | 2022.05.16 |
[자바] OOP - 1. 메서드와 클래스 (0) | 2022.05.04 |
[자바] 메소드란? (메소드, 리턴, 인자, 매개변수) (0) | 2022.04.26 |