생성자(constructor)
- 객체를 생성할 때 new 키워드와 함께 호출 (객체 생성 외에는 호출할 수 없음)
- 인스턴스를 초기화 하는 코드가 구현 됨 (주로 멤버 변수 초기화)
- 반환 값이 없음, 상속되지 않음
- 생성자는 클래스 이름과 동일
class Person {
private int idx;
private int name;
Person(int idx, int name) {
this.idx = idx;
this.name = name;
}
}
기본 생성자
- 하나의 클래스에는 반드시 하나 이상의 생성자가 존재해야 함
- 프로그래머가 생성자를 구현하지 않으면 컴파일러가 생성자 코드를 넣어줌
- 기본 생성자는 매개 변수가 없고, 구현부가 없음
- 만약 클래스에 다른 생성자가 있는 경우 디폴트 생성자는 제공 되지 않음
/* 생성자를 선언하지 않아도 객체를 생성할 수 있다 */
class Person {
private int idx;
private int name;
}
--------------------
Person person = new Person(); // 기본 생성자
생성자 오버로딩
- 생성자를 두 개 이상 구현하는 경우
- 사용하는 코드에서 여러 생성자 중 선택하여 사용할 수 있음
- private 변수도 생성자를 이용하여 초기화를 할 수 있음
class Person {
private int idx;
private int name;
/* 기본 생성자 */
Person() {}
/* 생성자2 */
Person(int idx) {
this.idx = idx;
}
/* 생성자3 */
Person(int idx, int name) {
this.idx = idx;
this.name = name;
}
}
참조 자료형(reference data type)
- 변수의 자료형
- 기본 자료형
- int, long, float, double 등
- 참조 자료형
- 기본 자료형은 사용하는 메모리가 정해져 있지만, 참조 자료형은 클래스에 따라 다르다.
참조 자료형 직접 만들어 사용하기
- 학생 클래스(Student)에 있는 과목 이름, 과목 성정 속성을
과목(Subject) 클래스로 분리하고
Subject 참조 자료형 멤버변수를 Student에 정의 하여 사용함
class Student {
private int idx;
private String name;
private Subject korean;
private Subject math;
}
class Subject {
private String name;
private int score;
}
접근 제어자
- 변수, 메서드, 생성자에 대한 접근 권한 지정
- public, private, protected, default
- 각 접근 제어자마다 접근할 수 있는 범위가 있다.
EX) private을 사용하면 클래스 외부에서는 접근 할 수 없음
- 외부에서 클래스 내부의 정보에 접근하지 못하도록 함
private 키워드를 활용
- private 변수를 외부에서 접근하게 하려면 public 메서드를 제공해야됨
EX) getter
- 클래스 내부 데이터를 잘못 사용하는 오률를 방지할 수 있음