객체를 생성하는 역할을 하는 클래스의 구성 요소.
인스턴스가 생성될 때 호출되는 인스턴스 초기화 메서드
인스턴스 생성을 담당하는 것은 new
키워드이며, 생성자는 인스턴스 변수들을 초기화하는 데 사용되는 특수한 메서드라 할 수 있습니다.
class Car {
public String model;
public String color;
public Car(){} // 기본생성자. 생성자가 없는 경우 자동 생성
// 생성자 오버로딩
public Car(String model, String color) { // 매개변수가 있는 생성자
this.model = model;
this.color = color;
}
모든 클래스에는 반드시 하나 이상의 생성자가 존재해야된다. 생성자를 따로 만들지 않아도 정상적으로 인스턴스를 만들 수 있었던 이유는 만약 생성자가 클래스 안에 포함되어 있지 않은 경우에는 자바 컴파일러가 기본 생성자를 자동으로 추가해줬기 때문이다.
매개변수가 있는 생성자는 메서드처럼 매개변수를 통해 호출 시에 해당 값을 받아 인스턴스를 초기화하는 데 사용됩니다.
생성자의 상호 호출을 가능하게 하는 메서드
this()
메서드는 자신이 속한 클래스에서 다른 생성자를 호출하는 경우에 사용합니다.
this()
메서드는 반드시 생성자의 내부에서만 사용할 수 있습니다.this()
메서드는 반드시 생성자의 첫 줄에 위치해야 합니다.인스턴스 변수와 매개변수를 이름만으로는 구분하기 어려운 경우 구분을 위해 사용된다.
this.
를 추가해주기 때문에 생략하는 경우가 많습니다.this.modelName = modelName
대신 modelName = modelName
this는 인스턴스 자신을 가리키며, 우리가 참조변수를 통해 인스턴스의 멤버에 접근할 수 있는 것처럼 this를 통해서 인스턴스 자신의 변수에 접근할 수 있습니다. 또한 this 키워드는 주로 인스턴스의 필드명과 지역변수를 구분하기 위한 용도로 사용됩니다.
클래스 내부에 선언된 클래스. 내, 외부 클래스가 서로 연관되어 있을 때 사용한다.
기본적으로 내부 클래스는 외부 클래스 내에 선언된다는 점을 제외하면 일반 클래스와 차이점이 없습니다. 단지 외부 클래스와 내부 클래스가 서로 연관되어 있을 때 사용의 편의성을 고려하여 만들어진 문법 요소입니다.
class Outer { // 외부 클래스
class Inner {
// 인스턴스 내부 클래스
}
static class StaticInner {
// 정적 내부 클래스
}
void run() {
class LocalInner {
// 지역 내부 클래스
}
}
}
인스턴스 내부 클래스는 객체 내부에 멤버의 형태로 존재하며, 외부 클래스의 모든 접근 지정자의 멤버에 접근할 수 있습니다.
내부 클래스가 외부 클래스의 존재와 무관하게 정적 변수를 사용할 수 있게한다.
static
키워드를 사용한다는 점에서 차이클래스의 멤버가 아닌 메서드 내에서 정의되는 클래스
메서드 내부에서만 사용가능하기 때문에 일반적으로 메서드 안에서 선언 후에 바로 객체를 생성해서 사용