오늘은 본격적인 알고리즘 공부 들어가기전 자바 클래스에 대해 다시 한번 복습하는 시간을 가져봤다.
임의의 데이터형을 자유로이 조합하여 만들 수 있는 자료구조이다.
class ABC {
int A; // A는 int형 필드
double B; // B는 double형 필드
String C; // C는 String형 필드
}
위에서 ABC는 클래스 이름이다. 클래스 ABC는 3개의 데이터 요소를 갖고 있다. 이 데이터 요소를 필드(field)라고 한다. 클래스형 변수를 사용할 때는 먼저 클래스형 변수(실체를 참조하는 변수)를 만들고, 실체인 클래스 인스턴스를 생성해야 한다.
ABC a; // ABC형의 클래스형 변수 a 선언
a = new ABC(); // ABC형의 클래스 인스턴스(실체)를 생성
ABC a = new ABC(); //위의 두 줄을 한 번에도 가능
필드 / 메서드 / 생성자를 선언할 때 public / protected / private를 지정할 수 있다.
메서드 / 생성자는 다중으로 정의(오버로드)할 수 있다.
=> 오버로드란 메서드나 생성자를 정의할 때 형식은 다흐지만 같은 이름을 붙이는 것을 의미한다.
final로 선언한 필드는 한 번만 값을 대입할 수 있다.
생성자는 새로 생성한 인스턴스의 초기화를 위해 사용이 된다.
간단한 예로 클래스를 알아보자
class A {
private int a1; // 비공개 필드
protected int a2; // 한정 공개 필드
public int a3; // 공개 필드
static final int f1 = 0; // 정적 상수 필드
public A() { // 생성자
a1 = a2 = a3 = 0;
}
public A(int a1, int a2, int a3) { // 생성자
this.a1 = a1;
this.a2 = a2;
this.a3 = a3;
}
public void setA1(int a) { // 메서드 A1의 setter
a1 = a;
}
public int getA1() { // 메서드 A1의 getter
return a1;
}
}
ex)
class B extends A {
// ...
}
ex)
class Y implements X {
// ...
}
클래스 또는 인터페이스 안에 선언한 클래스는 중첩 클래스(nested class)가 된다.