La palabra clave protected
otorga acceso a clases en el mismo paquete y subclases (http://java.sun.com/docs/books/tutorial/java/javaOO/accesscontrol.html).¿Cómo se protegen los métodos protegidos de java.lang.Object de las subclases?
Ahora, cada clase tiene java.lang.Object
como superclase (http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html).
Por lo tanto, concluyo que cada clase puede acceder a los métodos de java.lang.Object
, incluso si son protected
.
Tome una mirada en el siguiente ejemplo:
public class Testclass { public Object getOne() throws CloneNotSupportedException { return this.clone(); } public Object getTwo() throws CloneNotSupportedException { return ((Object) this).clone(); } }
Mientras getOne()
compila bien, getTwo()
da
Testclass.java:6: clone() has protected access in java.lang.Object return ((Object) this).clone();
que ni entender por qué getTwo()
no recopila ni lo que es la diferencia (en relación con el acceso de java.lang.Object
s miembros) con getOne()
.
difícil de creer que tenía exactamente la misma confusión cuando miraba a '' Clonable' y Object.clone() '- gracias. – wulfgarpro