¿Cómo se protegen los métodos protegidos de java.lang.Object de las subclases?
La palabra claveprotected
concede acceso a clases en el mismo paquete y subclases (http://java.sun.com/docs/books/tutorial/java/javaOO/accesscontrol.html)
Ahora, cada clase tienejava.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 accederjava.lang.Object
métodos incluso si sonprotected
.
Eche un vistazo al siguiente ejemplo:
public class Testclass { public Object getOne() throws CloneNotSupportedException { return this.clone(); } public Object getTwo() throws CloneNotSupportedException { return ((Object) this).clone(); } }
MientrasgetOne()
compila biengetTwo()
da
Testclass.java:6: clone() has protected access in java.lang.Object return ((Object) this).clone();
Tampoco entiendo por quégetTwo()
no compila ni cuál es la diferencia (con respecto al acceso dejava.lang.Object
s miembros) congetOne()
.