Comment les méthodes protégées de java.lang.Object sont-elles protégées des sous-classes?

Le mot-clé protected accorde l'accès aux classes du même package et sous-classes (http://java.sun.com/docs/books/tutorial/java/javaOO/accesscontrol.html).

Maintenant, chaque classe a java.lang.Object en tant que super-classe (http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html).

D'où je conclus que chaque classe peut accéder à java.lang.Object's méthodes, même si elles sont protected.

Prendre un coup d'oeil à l'exemple suivant:

public class Classetest { 
Objet public getOne() throws CloneNotSupportedException { 
de retour cette.clone(); 
} 
Objet public getTwo() throws CloneNotSupportedException { 
return ((Objet)).clone(); 
} 
} 

Tout getOne() compile fine, getTwo() donne

Testclass.java:6: clone() a un accès protégé en java.lang.Objet 
return ((Objet)).clone(); 

Je ne pas comprendre pourquoi getTwo() ne compile pas, ni quelle est la différence (en ce qui concerne l'accès de java.lang.Objects membres), avec getOne().

source d'informationauteur Adrian Heine