2012-11-09 8 views
10
Modifier  Class  Package Subclass World 
    public   Y   Y   Y   Y 
    protected  Y   Y   Y   N 
    no modifier  Y   Y   N   N 
    private   Y   N   N   N 


Javaで継承されていない同じパッケージ内で、protectedにアクセスできるのはなぜですか?

public class a { 
    protected int x; 
    } 

    public class b { 
     b() { 
       a A=new a(); 
       A.x=9;//why we can access this field ? 
     } 
    } 

私のJava

+0

Javaで保護されている特定の作業を知ってもらおうとしています – motaz99

+0

参照:http://stackoverflow.com/questions/215497/in-java-whats-the-difference-between-public-default-protected-and -private – looper

+8

これはJavaプログラミング言語の設計方法です。 – Jesper

答えて

13

なぜで保護された特定の作品を知って助けてください?それが、Javaプログラミング言語の設計方法です。それ以上のことはありません。 protectedある

何かが同じパッケージ内

  • クラス(彼らはサブクラスかそうでない場合は関係ありません)、
  • サブクラス、クラス自体

    • からアクセス可能である(ありません彼らが同じパッケージに入っているかどうかは問題です)。

    これはC++とは異なりますが、JavaはC++ではないため、同じ方法で動作するとは限りません。

  • +1

    ありがとうございました
    Javaでは、パケットがある場合、サブクラスが空間フィールドにアクセスできないようにして、同じパケットの他のクラスがそれにアクセスできないようにすることはできません – motaz99