🔍 내가 배운 내용 요약


  1. 클래스는 필드, 생성자, 메서드뿐만 아니라 다양한 구성 요소로 이루어짐
  2. 필드, 메서드, 생성자 외에도 정적(static) 요소, 이너 클래스, 초기화 블록 등 존재
  3. 각각이 클래스 안에서 어떤 역할을 하는지 학습

📚 클래스의 내부 구성 요소

구성 요소 설명 키워드 사용 예시
필드(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 ✘ 중첩 클래스 구조 내부 구조 분리

💬 공부하면서 느낀 점

단순히 클래스 = 변수 + 메서드라고 생각했는데,

초기화 블록이나 이너 클래스, 정적 필드 같은 구성요소까지 이해하니

클래스를 더 유연하고 효율적으로 설계할 수 있을 것 같았다.