🔍 내가 배운 내용 요약
static
제어자는 클래스 차원의 멤버(공용)를 만들 때 사용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 인스턴스 비교 정리