[자바 상속] 69. 접근 제어자

김건우's avatar
Feb 18, 2025
[자바 상속] 69. 접근 제어자
💡
public (모든 패키지에서 접근 가능)
priavate (자기 클래스에서만 접근 가능)
default (자기 패키지에서만 접근 가능)
protected (자기 자신만 접근 가능)

public(공용문) - 누구나 들어올 수 있음

즉, public 키워드를 사용하면 모든 패키지, 모든 클래스에서 접근 가능하다
  • 어디서든 접근 가능 (같은 패키지, 다른 패키지, 상속 여부 상관없음)
public class pu01 { public void opendoor() { // 누구나 사용할 수 있는 메서드 System.out.println("문을 열었습니다"); }

private - 나만 접근 가능

privated은 클래스 내부에서만 사용할 수 있으며, 다른 클래스에서는 절대 접근 할 수 없다.
  • 같은 클래스 내에서만 접근 가능
  • 다른 클래스에서는 접근 불가능 (같은 패키지에서도 불가능)
  • 보통 멤버 변수나 내부적인 메서드에 사용
public class pr01 { private String mySecret = "비밀 일기장"; private void readMyDiary() { System.out.println("내 비밀 일기장을 읽고 있습니다"); } }

protected - 가족만 들어올 수 있음

같은 패키지 내에서는 자유롭게 접근 가능하고, 다른 패키지에서는 상속 받은 클래스만 접근 가능하다.
  • 같은 패키지에서는 public 처럼 접근 가능
  • 다른 패키지에서는 상속받은 클래스에서만 접근 가능
public class pro01 { protected void family() { // 가족만 참여할 수 있는 회의 System.out.println("가족 회의를 시작합니다."); } } class Son extends pro01 { void attendance() { family(); // 자식 클래스에서 접근 가능 System.out.println("아들이 가족회의에 참석 합니다"); } }

default - 같은 패키지에서만 접근 가능

접근 제어자는 같은 패키지 내에서만 접근 가능하고, 다른 패키지에서는 접근 할 수 없다.
  • 같은 패키지 내에서 접근 가능
  • 다른 패키지에서는 접근 불가능
public class de01 { void neighborhood() { // 같은 패키지에 있는 클래스만 접근 가능 System.out.println("동네 친구들이 놀러왔습니다"); } }

싱글톤 패턴

하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴
class 바론 { public static 바론 instance = new 바론(); private 바론() { } } public class Single01 { public static void main(String[] args) { System.out.println("10분지났다"); 바론 b1 = 바론.instance; System.out.println("20분지났다"); } }
Share article

gunwoo