8월 22일 TIL, 항해 9일차

코코·2023년 8월 22일
0

TIL(Today I Learned)

목록 보기
10/19
post-thumbnail

접근제어자

  • private, (default), protected, public 4개 중 반드시 한 개만 사용가능
  • public, (default)는 클래스 앞에만 붙일 수 있다.
  • public, protected, (default), private 는 멤버변수(인스턴스변수 혹은 클래스변수) 앞에 붙일 수 있다.
  • 하나의 class 안에 public은 한번만 붙일 수 있다.
  • 소스파일 이름과 public class 이름은 일치해야 한다.

(1) private

같은 클래스 내에서만 접근이 가능하다.

(2) (default)

같은 패키지 내에서만 접근이 가능하다.

(3) protected

같은 패키지 내에서, 그리고 다른 패키지의 자손클래스에서 접근이 가능하다.

(4) public

접근 제한이 전혀 없다.

* 이해를 돕기 위한 표

제어자같은 클래스같은 패키지자손클래스전체
publicOOOO
protectedOOOX
(default)OOXX
privateOXXX

* 접근 범위

public > protectd > (default) > private

* 실습

package JavaChobo.pkg1;

class MyParent {
    private int prv;        // 같은 클래스
            int dft;        // 같은 패키지
    protected int prt;      // 같은 패키지 + 자손(다른 패키지)
    public int pub;         // 접근제한 없음.

    public void printMembers() {
        System.out.println(prv);      // OK
        System.out.println(dft);      // OK
        System.out.println(prt);      // OK
        System.out.println(pub);      // OK
    }
}

public class MyParentTest {
    public static void main(String[] args) {
        MyParent p = new MyParent();
        System.out.println(p.prv);      
        // 접근제어자가 private인데, 다른 클래스에서 
        // 사용하려고 했기 때문에 에러발생
        System.out.println(p.dft);      // OK
        System.out.println(p.prt);      // OK
        System.out.println(p.pub);      // OK

    }
}
profile
Just Do It

0개의 댓글