생성자
public Class Book {
String title;
String author;
int price;
public Book() {
}
}
생성자는 클래스와 이름이 같은데 코드를 가지고 있다.
보통 우리는 앞선 예제를 할 때 위와 같이 따로 코딩을 해주지 않았다.
이럴시에 JVM이 자동으로 생성해준다.
생성자는 클래스와 이름이 같고 리턴타입이 없다.
생성자의 목적은 객체를 만들고 주로 필드의 값을 초기화 할때 사용한다.
위와 같이 오버로딩을 이용하여 생성자를 이용한다.
여기서 setter와 무슨 차이가 있냐고 물어볼수 있는데
생성자는 초기값을 설정하는 것이며 setter는 해당 변수에 접근해 변수를 바꿔주는 의미이므로
서로 다르다고 볼 수 있다.
위에서 생성자를 따로 만들지 않았을 때, JVM은 자동으로 public Book()을 자동으로 만들어 준다고했다.
역으로 위에서 오버로딩한 생성자들 중 하나라도 만들면 자동으로 public Book()을 만들어 주지않는다.
예를들어,
위에서 생성자로 Book(String title, String author,int price) 하나만 만들면 public Book()을 자동으로 생성해주지 않는다.
그렇다면,위에서 생성자가 많아질 때, 밑에 일일이 this.를 써주면 불편하지 않을까라는 의문이 든다.
예를 들어
위의 예제만봐도 생성자마다 this.title, this.author등이 반복되고 있다.
이를 보완하기 위해 아래와 같이 쓴다.
이는 맨밑의 생성자에 몰아주는 느낌이다.
여기서 this()는 자신의 다른 생성자를 호출하는 코드라고 보면 된다.
'인공지능 교육 > Java' 카테고리의 다른 글
21/05/05 8일차 인공지능 교육 (0) | 2021.05.08 |
---|---|
21/05/04 6일차 인공지능 교육 (0) | 2021.05.04 |
21/05/03 5일차 인공지능 교육 (0) | 2021.05.03 |
21/04/30 4일차 인공지능 교육 (0) | 2021.04.30 |