접근 제어자 (access modifier)

essential·2023년 7월 17일

객체 지향

목록 보기
24/40

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

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

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

public 접근 제한이 전혀 없다

제어자같은 클래스같은 패키지자손 클래스전체
publicOOOO
protectedOOO
(default)OO
privateO
package pkg1

public class MyParent {
	private prv; // 같은 클래스
	//생략됨 (default)		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(prv); //ok
	}
}
class MyParentTest { // 접근 제어자가 (default)
		public static void main(String[] args) {
		MyParent p = new MyParent();
		System.out.println(p.prv); //에러
		System.out.println(p.dft); //ok
		System.out.println(p.prt); //ok
		System.out.println(p.prv); //ok
		}
}
package pkg2

import pkg1.MyParent;

class MyChild extends MyParent {
		public void printMembers() {
				System.out.println(prv); //에러 같은 클래스가 아님
				System.out.println(dft); //에러 같은 패키지가 아님 
				System.out.println(prt); //ok 자손이라 가능
				System.out.println(prv); //ok
	 }
}

public class MyParentTest2 {
		public static void main(String[] args) {
		System.out.println(p.prv); //에러
		System.out.println(p.dft); //에러
		System.out.println(p.prt); //에러
		System.out.println(p.prv); //ok 접근 제한 x 가능
		}
profile
essential

1개의 댓글

comment-user-thumbnail
2023년 7월 18일

좋은 글 감사합니다!

답글 달기