Si escribo una clase abstracta, luego anido una clase en la clase abstracta, ¿tendré acceso a sus métodos en cualquier subclase de la clase abstracta? No puedo encontrar la respuesta en ningún lado.Clase abstracta con clase anidada, ¿es esto posible?
Respuesta
Por supuesto, los modificadores de acceso en las clases internas obedecen a las mismas reglas que en los campos y métodos. No importa si su clase es abstracta o concreta, siempre que la clase anidada sea public
, protected
o la subclase esté en el mismo paquete y la clase interna sea paquete privado (modificador de acceso predeterminado), la subclase tendrá acceso a eso.
public abstract class AbstractTest {
// all subclasses have access to these classes
public class PublicInner {}
protected class ProtectedInner {}
// subclasses in the same package have access to this class
class PackagePrivateInner {}
// subclasses do not have access to this class
private class PrivateClass {}
}
Perfecto, excelente descripción. – providence
Si la clase anidada está al menos protegido, podemos acceder a sus métodos (siempre y cuando los métodos son públicos o que están en el mismo paquete y no son privadas).
Pero se podría haber intentado hacer esto usted mismo fácilmente :-)
class Abstract {
modifier1 class Nested { modifier2 int i = 0; }
Abstract() {
Nested n = new Nested();
n.i = 1;
}
}
class Sub extends Abstract {
Sub() {
Nested n = new Nested();
// have access as long you not choose "private"
// for `modifier1` or `modifier2`:
n.i = 5;
}
}
- 1. php clase abstracta extendiendo otra clase abstracta
- 2. clase abstracta estática
- 3. abstracción vs clase abstracta
- 4. ¿Es posible definir miembro en una clase secundaria sin definirlo en la clase principal abstracta? C#
- 5. Derivar clase abstracta de la clase no abstracta
- 6. Genéricos con parámetros genéricos y clase abstracta
- 7. Clase anidada .GetType()
- 8. clase Anotar con clase interna
- 9. clase concreta de la clase abstracta
- 10. ¿Qué es la clase abstracta en php?
- 11. clase anidada de Javascript
- 12. Clase abstracta con campo no inicializado final
- 13. Clase abstracta heredada con JPA (+ Hibernate)
- 14. delegado C# y clase abstracta
- 15. Scala Extendiendo Clase abstracta paramétrica
- 16. Clase abstracta sin métodos abstractos
- 17. serialización de una clase abstracta
- 18. Clase abstracta con todos los métodos concretos
- 19. Clase anidada: llamada a la clase anidada de la clase principal
- 20. clase abstracta Refactoring en C#
- 21. clase abstracta no implementa interfaz
- 22. ¿Es esto posible con sql?
- 23. Base abstracta o clase auxiliar
- 24. Extender la clase Singleton abstracta
- 25. clase anidada vs implementos ActionListener
- 26. ¿Es esto posible en JSON?
- 27. ¿Puede una clase abstracta extender otra clase abstracta y aumentar la funcionalidad?
- 28. primavera, clase abstracta y anotaciones
- 29. referencia a la clase abstracta
- 30. ¿Puede una clase anidada de C++ heredar su clase adjunta?
Podría dar un ejemplo estructural? no estoy seguro de si quiere decir que la clase A es abstracta, la clase B es la clase interna de A (se extiende A? estática?) y la clase C se extiende A externa a A? o extiende B? Por favor sé un poco más específico. –