sobre - java swing tutorial pdf español
¿Por qué deberíamos declarar los métodos de interfaz como públicos? (5)
Si marcamos un método de interfaz como privado, la clase implementadora no verá el método y no podrá anularlo.
Si marcamos un método de interfaz como protegido, la clase implementadora no verá el método a menos que esté en el mismo paquete que la interfaz.
Si marcamos un método de interfaz sin ningún modificador de acceso el
clase de implementación no verá el método a menos que esté en el mismo
paquete como la interfaz
Esta pregunta ya tiene una respuesta aquí:
- Protegido en interfaces 14 respuestas
Cuando implemento un método de interface
, me veo obligado a hacerlo un método public
.
Es posible que tengamos casos en los que deseamos utilizar el default
(como en el caso de acceso dentro del mismo paquete) o protected
.
¿Alguien puede explicar la razón detrás de esta limitación?
Las interfaces están destinadas a definir la API pública de un tipo, y solo eso, no su implementación. Por lo tanto, cualquier método (o miembro estático) que defina en una interfaz es, por definición, public
.
Dado que una interfaz no puede contener ninguna implementación concreta, no hay forma de llamar a ningún método miembro desde dentro. Y declarar tales métodos pero dejar las llamadas a ellos a subclases o clientes totalmente no relacionados significaría que su definición de tipo es incompleta y quebradiza. Es por eso que si necesita definir miembros protegidos o de acceso al paquete, puede hacerlo en una clase abstracta (que también puede contener implementación).
Tal vez this proporcionará algunas respuestas.
Que yo sepa, usa interfaces
para permitir que personas ajenas a su código interactúen con su código. Para hacer esto, necesitas definir tus métodos public
.
Si desea forzar a alguien a anular un conjunto dado de métodos privados, puede declarar una clase abstracta con una serie de métodos abstractos protegidos.
Una interfaz es un contrato que la clase que implementa tendrá los métodos en la interfaz. La interfaz se usa para mostrar al resto del programa que esta clase tiene los métodos y que podrían llamarse
EDIT: Esta respuesta es para implementaciones de interfaz C #. En este caso de Java, el escenario es similar, simplemente porque el analizador sintáctico desea una palabra clave pública mencionada en la interfaz, que se realiza implícitamente en C #
Los métodos de la interfaz son implícitamente públicos en C # porque una interfaz es un contrato destinado a ser utilizado por otras clases. Además, debe declarar que estos métodos son públicos y no estáticos cuando implementa la interfaz .
interface IStorable
{
void Read( );
void Write(object obj);
}
Tenga en cuenta que las declaraciones de métodos IStorable
para Read( )
y Write( )
no incluyen modificadores de acceso ( public
, protected
..). De hecho, proporcionar un modificador de acceso genera un error de compilación.
class Document : IStorable
{
public void Read( )
{
//
}
public void Write(object obj)
{
//
}
}
Solo piense en las interfaces como Contratos que se implementarán como public