💡 클래스
객체와 객체 간의 상호작용은 메소드를 통해 이뤄짐. (서로 호출하며)
public class Car {
// 필드
String color;
String model;
int year;
// 생성자
public Car(String color, String model, int year) {
this.color = color;
this.model = model;
this.year = year;
}
// 메서드
public void startEngine() {
System.out.println("Engine started");
}
public void stopEngine() {
System.out.println("Engine stopped");
}
}
public class Car {
String color;
String model;
int year;
// 기본 생성자
public Car() {}
// 매개변수가 있는 생성자
public Car(String color, String model, int year) {
this.color = color;
this.model = model;
this.year = year;
}
변수 | 생성시기 | 소멸시기 |
---|---|---|
클래스 변수 | 프로그램 시작 시 | 프로그램 종료 시 |
인스턴스 변수 | 인스턴스 생성 시 | 참조하지 않을 시 (GC 소관) |
지역 변수 | 메소드 호출 시 | 메소드 종료 시 |
- 클래스 변수 : static 키워드를 가지고 필드에 선언하는 변수, 메모리의 static영역 사용
- 멤버 변수(인스턴스 변수) : static 키워드 없이 필드에 선언하는 변수, 메모리의 heap영역 사용
- 지역 변수 : 메소드, 생성자, 초기화 블록 내부에서 선언하는 변수
public class Car {
static String manufacturer;
// 클래스 초기화 블록
static {
manufacturer = "Generic Manufacturer";
System.out.println("Static initialization block executed");
}
String color;
String model;
int year;
// 인스턴스 초기화 블록
{
color = "unknown";
model = "unknown";
year = 0;
System.out.println("Instance initialization block executed");
}
}
인스턴스 변수
클래스 초기화 블럭