protected 접근 제한자
(상속과 관련이 있다.)
protected 는 public 과 default 접근 제한의 중간쯤에 해당된다.
같은 패키지에서는 default 와 같이 접근 제한이 없지만,
다른 패키지에서는 자식 클래스만 접근을 허용한다.
protected 는 필드, 생성자, 메소드 선언에 사용될 수 있다.
ex) A.java
package package1;
public class A {
//필드
protected String field;
//생성자
protected A() {
}
//메소드
protected void method() {
}
}
ex) B 클래스는 A 클래스와 동일한 패키지에 있다.
default 접근 제한과 마찬가지로 B 클래스의 생성자와 메소드에는
A 클래스의 protected 필드, 생성자, 메소드 접근이 가능하다.
B.java
package package1; // A 클래스와 같은 패키지
public class B {
// 메소드
public void method() {
A a = new A(); // 생성자 접근 가능
a.field = "value"; // 필드 접근 가능
a.method(); // 메소드 접근 가능
}
}
ex) A 클래스와 다른 패키지의 C 클래스는 default 접근 제한과 마찬가지로
A클래스의 protected 필드, 생성자, 메소드에 접근할 수 없다.
C.java
package package2;
import package1.A; //import A
public class C {
public void method() {
A a = new A(); // X 접근 불가
a.field = "value"; // X 접근 불가
a.method(); // X 접근 불가
}
}
ex)
D.java
package pakcage2;
import package1.A; // import A
public class D extends A {
public D() {
super(); // 접근 가능
this.field = "value"; // 접근 가능
this.method(); // 접근 가능
}
}
D 클래스 : A 클래스와 다른 패키지, A의 자식 클래스
따라서 A 클래스의 protected 필드, 생성자, 메소드에 접근이 가능하다.
단, new 연산자를 사용해서 생성자를 직접 호출할 수 없고,
자식 생성자에서 super( ) 로 A 생성자를 호출할 수 있다. (명시해야 한다)
728x90
'Java 기본 문법 - 참조 서적 [이것이 자바다 - 한빛미디어] > 5. 상속, 다형성' 카테고리의 다른 글
5. Java 자바 - 필드의 다형성 (0) | 2020.05.25 |
---|---|
4. Java 자바 - 타입 변환과 다형성 (1) | 2020.05.24 |
2. Java 자바 - 메소드 재정의 @Overrride, final 클래스, final 메소드 (0) | 2020.05.22 |
1. Java 자바 - 상속 inheritance (0) | 2020.05.22 |