
인스턴스 변수를 초기화하는 데 사용되는 메서드이다.
- 생성자와 메서드의 차이점
- 생성자의 이름은 반드시 클래스의 이름과 같아야 함
- 생성자는 리턴 타입이 없음
클래스명(){} // 기본 생성자
DefConst(){} // DefConst 클래스의 기본 생성자
public class ConstructorExam {
public static void main(String[] args) {
Computer com = new Computer("Windows", "하얀색");
System.out.println("제 PC의 운영체제는 " + com.getOsName() + "이고, 컬러는 " + com.getColor() + "입니다.");
}
}
class Computer {
private String osName;
private String color;
public Car(String osName, color) {
this.osName = osName;
this.color = color;
}
public String getOsName() {
return osName;
}
public String getColor() {
return color;
}
}
// 출력 결과
// 제 PC의 운영체제는 Windows이고, 컬러는 하얀색입니다.
pubilc class TestCase {
public static void main(String[] args) {
Exam exam = new Exam();
Exam exam = new Exam(1);
}
}
class Exam {
public Exam() {
System.out.println("Exam의 기본 생성자");
}
public Exam(int x) {
this();
System.out.println("Exam의 두 번째 생성자");
}
}
// 출력 결과
// Exam의 기본 생성자
// Exam의 기본 생성자
// Exam의 두 번째 생성자
클래스 내에 선언된 클래스로 외부 클래스와 내부 클래스가 서로 연관되어 있을 때 사용한다.
외부 클래스로의 접근이 용이하고 코드의 복잡성이 감소한다.
캡슐화(Encapsulation)에 용이하다.
인스턴스 내부 클래스, 정적 내부 클래스 , 지역 내부 클래스로 구분한다.
class OuterClass { // 외부 클래스
class InnerClass {
// 인스턴스 내부 클래스
}
static class StaticInnerClass {
// 정적 내부 클래스
}
void play(){
// 지역 내부 클래스
}
}
| 종류 | 선언 위치 | 사용 가능한 변수 |
|---|---|---|
| 인스턴스 내부 클래스(instance inner class) | 외부 클래스의 멤버변수 선언 위치에 선언(멤버 내부 클래스) | 외부 인스턴스, 외부 전역변수 |
| 정적 내부 클래스(static inner class) | 외부 클래스의 멤버변수 선언 위치에 선언(멤버 내부 클래스) | 외부 전역변수 |
| 지역 내부 클래스(local inner class) | 외부 클래스의 메서드나 초기화 블럭 안에 선언 | 외부 인스턴스, 외부 전역변수 |
| 익명 내부 클래스(anonymous inner class) | 클래스의 선언과 객체의 생성을 동시에 하는 일회용 익명 클래스 | 외부 인스턴스, 외부 전역변수 |