1. 필드(Field)
필드
[접근제한자] [예약어] class 클래스명 {
[접근제한자] [예약어] 자료형 변수명 [= 초기값];
}
public class Academy {
public int temp1;
protected int temp2;
int temp3;
private int temp4;
}
필드 접근제한자
- 1) public: 전체 접근 가능
2) protected: 해당 클래스 내부, 같은 패키지, 후손 클래스 내부에서만 접근 가능
3) (default): 해당 클래스 내부, 같은 패키지에서만 접근 가능
4) private: 해당 클래스 내부에서만 접근 가능
필드 예약어
- static:
같은 타입의 여러 객체가 공유할 목적의 필드에 사용하며,
프로그램 시작 시에 정적 메모리 영역(static)에 자동 할당되는 멤버에 적용
- final:
하나의 값만 계속 저장해야 하는 변수에 사용하는 예약어
public class Academy {
private final int TEMP1 = 100;
private int temp4;
}
클래스 초기화 블럭
- 인스턴스 블럭:
인스턴스 변수를 초기화시키는 블럭으로 객체 생성 시마다 초기화
- 클래스 블럭(static 블럭):
static 필드를 초기화시키는 블럭으로 프로그램 시작 시에 한번만 초기화
2. 생성자(Constructor)
생성자
- 객체가 new 연산자를 통해 Heap 메모리 영역에 할당될 때
객체 안에서 만들어지는 필드 초기화 + 생성 시 필요한 기능 수행
- 생성자는 일종의 메서드로 전달된 초기 값을 받아서 객체의 필드에 기록
- 생성자 규칙:
생성자의 선언은 메서드 선언과 유사하나 반환 값이 없으며
생성자명을 클래스명과 똑같이 지정해주어야 함
[접근제한자] [예약어] class 클래스명 {
[접근제한자] 클래스명() { }
[접근제한자] 클래스명(매개변수) { (this.)필드명 = 매개변수; }
}
생성자 종류
- 1) 기본 생성자:
작성하지 않은 경우, 클래스 사용 시 컴파일러가 자동으로 기본 생성자 생성
2) 매개변수 생성자:
객체 생성 시 전달받은 값으로 객체를 초기화하기 위해 사용
매개변수 생성자 작성 시 컴파일러가 기본 생성자를 자동으로 생성해주지 않음
상속에서 사용 시 반드시 기본 생성자를 작성
오버로딩을 이용하여 작성
public class Academy {
private int studentNo;
private String name;
public Academy() {}
public Academy(int studentNo, String name) {
this.studentNo = studentNo;
this.name = name;
}
}
오버로딩(Overloading)
- 한 클래스 내에 동일한 이름의 메서드를 여러 개 작성하는 기법
- 오버로딩 조건
1) 같은 메서드 이름
2) 다른 매개변수의 개수, 타입, 순서를 갖춰야 함
3. this 생성자
this()
- this 생성자
- 같은 클래스의 다른 생성자를 호출할 때 사용
- 반드시 첫번째 줄에 선언해야 함
public class Academy{
private int age;
private String name;
public Academy() {
this(20, “김철수”);
}
public Academy(int age, String name) {
this.age = age; this.name = name;
}
}