객체 지향 프로그래밍 - 상속
protected 접근 제한자
한모로그
2023. 1. 18. 21:00
protected 접근 제한자
- protected는 상속과 관련이 있고, public과 default의 중간쯤에 해당하는 접근 제한
- protected는 같은 패키지에서는 default처럼 접근이 가능하나, 다른 패키지에서는 자식 클래스만 접근을 허용
출처, 이것이 자바다
package ch07.sec06.package1;
//접근제한자 범위 private < [default] < protected < public
//protected (상속)접근제한자 : 동일한 패키지안에는 public으로 참조가능하다.
//동일한 패키지에서는 public으로 참조가능하다. 다른 패키지는 private 참조 불가능
public class A {
//필드 선언
protected String field;
//생성자 선언
protected A() {
}
//메소드 선언
protected void method() {
}
}
package ch07.sec06.package1;
//A클래스와 동일한 패키지
public class B {
//메소드 선언
public void method() {
A a = new A();
a.field = "value";
a.method();
}
}
package ch07.sec06.package2;
//A클래스와 다른 패키지
import ch07.sec06.package1.A;
public class C {
//메소드 선언
public void method() {
//protected다른 패키지이므로 private반응 참조불가능
/*
A a = new A();
a.field = "value";
a.method();
*/
}
}
package ch07.sec06.package2;
import ch07.sec06.package1.A;
//A클래스와 다른 패키지
//상속관계
public class D extends A {
//생성자 선언
public D() {
super();
}
//메소드 선언
public void method1() {
//상속관계가 적용되어 사용
//A클래스의 필드값 변경
this.field = "value";
//A클래스의 메소드 호출
this.method();
}
//메소드 선언
public void method2() {
/*
* 상속관계 성격이 아니라 직접 객체생성은 private 반응으로 참조불가능
A a = new A();
a.field = "value";
a.method();
*/
}
}