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
}
}