/ JAVAJUNGSUK

Ch7-21. 접근제어자

자바의 정석 기초편

0. 목차



Chapter7. 객체지향 프로그래밍Ⅱ

Ch7 - 21. 접근제어자



Ch7 - 21. 접근제어자


▶ 접근제어자(access modifier) 4가지

▷ private
  • 같은 클래스 내에서만 접근 가능
▷ (default)
  • 같은 패키지 내에서만 접근 가능
▷ protected
  • 같은 패키지 내 + 다른 패키지의 자손 클래스 내에서 접근 가능
▷ public
  • 접근 제한 없음, 모두 접근 가능


▶ class 앞 : public, (default)

▷ public

public class AccessModifierTest { }

▷ (default)

class AccessModifierTest { }

▶ iv 앞 : private, (default), protected, public

▷ private

private int iv;

▷ (default)

int iv;

▷ protected

public protected int iv;

▷ public

public int iv;

▶ cv 앞 : private, (default), protected, public

▷ private

private static int cv;

▷ (default)

static int cv;

▷ protected

protected static int cv;

▷ public

public static int cv;

▶ 실습

▷ 같은 클래스
package baek;

class Prent {

	private int prv;
	int dft;
	protected int prt;
	public int pub;
	
	void members() {
		System.out.println("prv" + prv); // ok
		System.out.println("dft" + dft); // ok
		System.out.println("prt" + prt); // ok
		System.out.println("pub" + pub); // ok
	}
}
▷ 다른 클래스
package baek;

class Different1 {
	void members() {
		Prent p = new Prent();
		System.out.println("prv" + p.prv); // error, private : 다른 클래스 사용X
		System.out.println("dft" + p.dft); // ok
		System.out.println("prt" + p.prt); // ok
		System.out.println("pub" + p.pub); // ok
	}
}
▷ 다른 패키지 + 상속
  • 다른 패키지에서 상속받으려면 조상 클래스가 public 이어야 함
  • default class같은 패키지 내에서만 상속 가능
  • class Prent → public class Prent
  • class Diffrent2 extends baek.Prent
  • 상속 받은 뒤 ctrl + shift + o 자동 import 해 주기
package baek2;

import baek.Prent;

class Different2 extends baek.Prent {

	void members() {
		System.out.println("prv" + prv); // error, private : 같은 클래스만
		System.out.println("dft" + dft); // error, defalut : 같은 패키지만
		System.out.println("prt" + prt); // ok, protected : 같은 패키지만 + 다른 패키지 자손은 가능
		System.out.println("pub" + pub); // ok
	}
}
▷ 다른 패키지
package baek2;

import baek.Prent;

class Different3 {

	void members() {
		Prent p = new Prent();

		System.out.println("prv" + p.prv); // error, private : 같은 클래스만
		System.out.println("dft" + p.dft); // error, defalut : 같은 패키지만
		System.out.println("prt" + p.prt); // error, protected : 같은 패키지만 + 다른 패키지 자손은 가능
		System.out.println("pub" + p.pub); // ok
	}
}
▷ 정리 그림