- Constructor(생성자)
- 객체 생성 시에 초기화를 담당한다
- new연산자로 호출되는 중괄호 블록이다
- 클래스 이름과 생성자의 이름은 동일해야 한다
- 생성자가 하나라도 있으면 Default생성자는 컴파일 단계에서 자동으로 생성되지 않으며 Default생성자가 필요하다면 생성자 오버 로딩을 통해 Default생성자를 생성해줘야 사용이 가능하다
-
public class Student { public Student() { } }
- 객체 생성 시 사용하는 new연산자에서 소괄호 안에 넣어줄 매개 변수를 생성자에서 설정해 줄 수 있다
- 생성자를 작성하지 않으면 컴파일 시에 default생성자가 만들어지며 위의 코드와 똑같이 만들어진다
- 메서드와 동일하게 생겼지만 반환 값이 없고 클래스 이름과 동일한 것이 특징이다
- 생성자를 여러 개 생성할수 있다
- 생성자를 여러개 만들어주는 것을 생성자 오버 로딩이라고 하며 매개변수의 타입, 개수 또는 타입과 개수가 모두 다른경우 오버로딩이 가능하다
- 불가능한 경우
-
public class Student { public int num; public String name; public int age; public int regNo; public Student (int num, int age) { this.num = num; this.age = age; } public Student (int num, int regNo) { this.num = num; this.regNo = regNo; } }
- 위와 같이 매개변수에 들어가는 값의 개수가 같을 때 같은 타입이면 오류가 생긴다
- 오버 로딩 시에는 매개변수의 변수명은 중요하지 않으며 타입과 개수가 다른 것이 중요하다
-
- 가능한 경우
-
public class Student { public int num; public String name; public int age; public int regNo; public Student (int num, int age) { this.num = num; this.age = age; } public Student (int num, String name) { this.num = num; this.name = name; } }
- 위의 경우에는 매개변수의 개수는 같지만 타입이 다르기 때문에 오버 로딩이 가능하다
-
- this
- 위의 코드를 보면 모두 생성자 안에서 this라는 키워드를 사용해줬는데 자기 자신을 뜻한다
- 생성자를 보면 매개변수로 받아오는 변수의 이름이 필드의 변수 이름이랑 같다. 일반적으로 위와 같이 작성을 해주는데 그때 필드가 가지고 있는 변수와 매개변수로 받아오는 변수를 구분해주기 위해 this라는 키워드를 사용할 수 있다.
- this는 생성된 인스턴스 자신을 가리키는 키워드로 Student클래스로 A와 B라는 인스턴스를 생성했을 때 A의 this는 A가 가지고 있는 필드와 메서드, 생성자를 가리키고, B의 this는 B가 가지고있는 필드와 메서드, 생성자를 가리킨다.
'Back-end > JAVA' 카테고리의 다른 글
19. Class - 멤버와 패키지, 접근 제한자 (0) | 2021.07.24 |
---|---|
18. Class - Method(메서드) (0) | 2021.07.24 |
16. Class - Field(필드) (0) | 2021.06.23 |
15. Class - 객체와 클래스 (0) | 2021.06.22 |
14. 참조 타입(Reference Type) - Enumeration(열거타입) (0) | 2021.06.21 |