보호 된 액세스 수정 자의 경우, 연관된 메소드 또는 속성이 해당 서브 클래스에서 볼 수 있어야합니다. 그것은 정의에 따른 것입니다.보호 된 메소드에 대한 액세스 수정 자
하지만 여기서 설명 할 수없는 한 가지가 있습니다. 기본 클래스 : 예를 들어, 우리는 아래의 코드를
package com.set.test;
public class ModifierBase {
private int privateInt;
int friendlyInt;
protected int protectedInt;
public int publicInt;
private void displayPrivate(){
System.out.println("displayPrivate");
}
void displayFriendly(){
System.out.println("displayFriendly");
}
protected void displaoyProtected(){
System.out.println("displaoyProtected");
}
public void displayPublic(){
System.out.println("displayPublic");
}
}
을 그리고 클래스는 다른 패키지에서이 일을 확장합니다.
package com.another;
import com.set.test.ModifierBase;
public class ModifierSubPackgeExtend extends ModifierBase{
public static void main(String[] args) {
ModifierSubPackgeExtend m = new ModifierSubPackgeExtend();
ModifierBase mb = new ModifierSubPackgeExtend();
}
}
m은 보호 된 사람과 공개 된 사람 모두에 액세스 할 수 있습니다. 그러나 mb는 보호 된 메서드 또는 변수에 액세스 할 수 없습니다.
왜 그렇습니까?
그러나 친화적 갖는 같은 예를 들어 :
package com.set.test;
public class ModifierExtend extends ModifierBase {
public static void main(String[] args) {
ModifierExtend m = new ModifierExtend();
ModifierBase mb = new ModifierExtend();
}
}
모두 m와 MB는 친절한 수정에 액세스 할 수 있습니다.
m.friendlyInt
mb.friendlyInt
두 가지 모두 괜찮습니다.
기본 클래스로 선언하고 하위 클래스로 초기화 할 때 보호 된 vs 선언에 대한 다른 액세스 권한을 갖고 하위 클래스로 초기화하는 이유는 무엇입니까?
정확히 달성하려는 것은 무엇입니까? 또한 java에는'friendly' 수정자가 없습니다. 패키지 레벨 권한입니다. –
나는 키워드로서 친숙한 리터럴이 없다. 나는 왜 기본 클래스가 하위 클래스로 선언하는 다른 액세스 수준을 비교하는지 선언하는 이유를 묻고 있습니다. 왜 행동이 친절한 접근과 비교되지 않는 이유. –
친절한 액세스 권한은없고 패키지 수준 액세스 만 가능합니다. 그리고 그들은 다른 패키지에 있습니다. –