🔍 내가 배운 내용 요약
필드
, 메서드
, 생성자
외에도 정적(static) 요소
, 이너 클래스
, 초기화 블록
등 존재📚 클래스의 내부 구성 요소
구성 요소 | 설명 | 키워드 | 사용 예시 |
---|---|---|---|
필드(Field) | 객체가 가지는 속성(데이터) | 자료형 + 변수명 | String name; |
생성자(Constructor) | 객체 생성 시 실행, 필드 초기화 | 클래스명과 동일 | Person(String name) { ... } |
메서드(Method) | 동작, 기능을 정의 | 반환형 + 이름 | void speak() { ... } |
초기화 블록(Instance Initializer) | 생성자보다 먼저 실행되는 코드 블록 | { ... } |
{ System.out.println("객체 생성"); } |
정적 필드 / 메서드 | 클래스 자체에 소속, 공용 자원 | static |
static int count; |
이너 클래스(Inner Class) | 클래스 안에 선언된 또 다른 클래스 | class |
class Engine { ... } |
접근 제어자 | 접근 범위 제한 | public , private , protected |
private int age; |
this 키워드 | 현재 객체를 가리킴 | this. |
this.name = name; |
✅ 예시: 클래스 구성 요소 통합 코드
Java
public class Car {
// 필드 (멤버 변수)
private String model;
private static int carCount; // 정적 필드
// 초기화 블록
{
System.out.println("Car 객체 초기화 중...");
}
// 생성자
public Car(String model) {
this.model = model;
carCount++;
}
// 인스턴스 메서드
public void drive() {
System.out.println(model + "가 달립니다.");
}
// 정적 메서드
public static int getCarCount() {
return carCount;
}
// 내부 클래스
class Engine {
void start() {
System.out.println("엔진 시동");
}
}
}
✅ 정리: 구성 요소별 특징
요소 | 객체 필요? | 클래스당 몇 개? | 주로 쓰임 |
---|---|---|---|
인스턴스 필드 | ✔ 필요함 | 객체마다 따로 존재 | 객체 상태 저장 |
정적 필드 | ✘ 필요 없음 | 클래스 마다 한 개 | 전체 공용 값 |
생성자 | ✔ 필요함 | 여러 개 가능 (오버로딩) | 객체 초기화 |
인스턴스 메서드 | ✔ 필요함 | 여러 개 가능 | 동작 정의 |
정적 메서드 | ✘ 필요 없음 | 여러 개 가능 | 공용 동작, 유틸 |
초기화 블록 | ✔ 필요함 | 선택적 1개+ | 생성자 실행 전 실행됨 |
이너 클래스 | ✔ or ✘ | 중첩 클래스 구조 | 내부 구조 분리 |
💬 공부하면서 느낀 점
단순히 클래스 = 변수 + 메서드라고 생각했는데,
초기화 블록이나 이너 클래스, 정적 필드 같은 구성요소까지 이해하니
클래스를 더 유연하고 효율적으로 설계할 수 있을 것 같았다.