Si tengo una clase java que es paquete-privado (declarada con "clase", no "clase pública"), realmente no hay diferencia si los métodos internos se declaran públicos o protegidos o paquete privado, ¿verdad? Entonces, ¿qué debería usar, o cuándo debería usar cuál? Estoy un poco confundido.Java - ¿Accesibilidad del método dentro de la clase paquete privado?
Respuesta
Si tengo una clase java que es el paquete-privada (declarado con "clase", no "public class"), realmente no hay diferencia si los métodos en el interior se declaran público o protegidos o paquete-privada, ¿derecho?
Bueno, tal vez no de inmediato. Pero si luego (o en el futuro) declara una clase 'protegida' o 'pública' que hereda de la clase paquete privado, entonces la visibilidad de los miembros de la clase original importa.
Como señala @kmccoy, declarar la clase como definitiva elimina la posibilidad de subclases.
Pero esto es realmente solo escaparatismo. Si luego decides que realmente necesitas crear subclases, simplemente eliminas el final
... y luego vuelves a la situación donde la elección de los modificadores de acceso sí importa.
IMO, la conclusión es que debe elegir los modificadores más adecuados ... incluso si no es necesario en este momento. Si nada más, su elección de modificadores debe documentar su intención en cuanto a dónde se encuentran los límites de abstracción.
Los métodos públicos dentro de una clase de paquete son públicos para las clases en el mismo paquete. Pero, los métodos privados no serán accesibles por clases en el mismo paquete.
- 1. RoR - NoMethodError: método privado `abierto 'llamado Gem :: Paquete: Clase
- 2. AbstractMethodError se produjo cuando el método privado del paquete reemplaza
- 3. Cargar imagen de Java dentro del paquete de una clase en un paquete diferente
- 4. ¿Cómo crear un método de clase privado?
- 5. ¿Por qué C no tiene paquete privado?
- 6. Definición de la clase dentro del argumento del método en Java?
- 7. Clase de miembro estático: ¿declara clase privada y miembro de clase paquete privado?
- 8. ¿No se puede acceder al método privado desde dentro de la clase?
- 9. Método privado no existe cuando hacemos javap nombre de clase
- 10. Incluir archivo JS dentro del ámbito privado
- 11. alcance del constructor privado en la clase jerarquizada
- 12. Visibilidad Java campo privado
- 13. ¿Alguna manera de invocar un método privado?
- 14. Obtener una matriz de archivos de clase dentro de un paquete en Java
- 15. Uso del paquete data.table dentro de mi propio paquete
- 16. Constructor privado en la clase abstracta
- 17. Cómo llamar a un método privado desde fuera de una clase java
- 18. C# serializar miembro privado de la clase
- 19. ¿Puede un método nativo llamar a un método privado?
- 20. Sobrescribir la peculiaridad del método java equals()
- 21. Método privado llamado error
- 22. Método privado en una interfaz C++?
- 23. Matriz como miembro privado de la clase
- 24. Java - Clone la propiedad dentro de método getter
- 25. ¿Deberíamos declarar un constructor público cuando la clase se declara como paquete privado?
- 26. Python: módulo 'Privado' en un paquete
- 27. clase jQuery dentro del selector de clase
- 28. Making paquete protegido clase java visible en paquete principal
- 29. Error: Intento llamar al método privado
- 30. Llamar a un método de clase dentro de una clase
Si la clase es 'clase final SomeClass', entonces ¿importaría la visibilidad del miembro? – kmccoy
Si se elimina el modificador final en alguna refactorización futura :) Recuerde que este es un software, "final" no significa "establecido en piedra nunca para cambiar", es decir, "no puede derivar una clase secundaria de este tipo como está escrito ahora mismo." –