🔍 내가 배운 내용 요약


  1. 접근 지정자는 클래스/멤버에 접근할 수 있는 범위를 정함
  2. static 제어자는 클래스 차원의 멤버(공용)를 만들 때 사용
  3. static과 인스턴스 멤버의 차이를 실습을 통해 이해함

📚 접근 지정자(Access Modifiers)

지정자 접근 범위 사용 가능 위치 설명
public 어디서든 접근 가능 클래스, 생성자, 필드, 메서드 누구나 접근할 수 있음
protected 같은 패키지 + 자식 클래스 필드, 메서드 상속 관계에서 접근 허용
(default , 생략) 같은 패키지 내에서만 접근 클래스, 필드, 메서드 "패키지 프라이빗"
private 같은 클래스 내부에서만 접근 필드, 메서드 외부에서는 접근 불가 (캡슐화 목적)

접근 지정자 예시

Java

public class Person {
    public String name;        // 어디서나 접근 가능
    protected int age;         // 상속 받은 클래스에서 접근 가능
    
    String job;                // default: 같은 패키지에서만
    private String password;   // 클래스 내부에서만 접근 가능

    private void showPassword() {
        System.out.println(password); // OK
    }
}

📚 static 제어자

특징 설명
클래스 차원의 멤버 객체를 생성하지 않아도 클래스명으로 접근 가능
공용 자원 여러 객체가 공유하는 변수나 기능에 사용
대표적인 용도 static 변수, static 메서드, main() 메서드 등
인스턴스 멤버 접근 제한 static 메서드 안에서는 인스턴스 변수 사용 불가

static 변수/메서드 예시

Java

public class Counter {
    public static int count = 0;  // static 변수

    public Counter() {
        count++;
    }

    public static void printCount() {
        System.out.println("총 생성된 객체 수: " + count);
    }
}

// 사용 예
Counter c1 = new Counter();
Counter c2 = new Counter();
Counter.printCount();  // 출력: 총 생성된 객체 수: 2

static vs 인스턴스 비교 정리