2012-11-09 5 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 


Perché protetto può essere l'accesso nello stesso pacchetto senza ereditarietà in java?

public class a { 
    protected int x; 
    } 

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

si prega di aiutare i miei a conoscere il lavoro specifico di protezione in Java

+0

per favore aiutami a conoscere il lavoro specifico di protetto in Java – motaz99

+0

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

+8

Perché è così che è stato progettato il linguaggio di programmazione Java. – Jesper

risposta

13

Perché? Perché è così che è stato progettato il linguaggio di programmazione Java. Non c'è molto di più.

Qualcosa che è protected è accessibile da

  • la classe stessa,
  • classi nello stesso package (non importa se sono sottoclassi o no),
  • sottoclassi (non importa se sono nello stesso pacchetto o no).

Questo è diverso da C++, ma Java non è C++, quindi non funziona necessariamente allo stesso modo.

+1

Grazie
Quindi in Java se abbiamo pacchetti non possiamo permettere alle sottoclassi di accedere al campo spaziale e impedire ad altre classi nello stesso pacchetto di accedervi – motaz99