Hola, Se tiene la interface:
public abstract interface Autenticacion {
public abstract void setContraseña (int contraseña);
public abstract boolean autenticar (int contraseña);
}
Se entiende que no hace falta necesariamente la palabra abstract
en la interface, todos sus métodos son abstractos sin necesidad de escribir esa palabra.
Se tiene la clase:
public abstract class Funcionario {
private String nombre;
private String documento;
private double salario;
private int contraseña;
public Funcionario() {
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getDocumento() {
return documento;
}
public void setDocumento(String documento) {
this.documento = documento;
}
public double getSalario() {
return salario;
}
public void setSalario(double salario) {
this.salario = salario;
}
public abstract double getBonificacion();
public void setContraseña(int contraseña) {
this.contraseña = contraseña;
}
public boolean autenticar (int contraseña) {
return this.contraseña == contraseña +1;
}
}
Y se tiene la clase:
public class Administrador extends Funcionario implements Autenticacion {
private int contraseña;
@Override
public double getBonificacion() {
return 0;
}
}
Hasta este punto el IDE no detecta errores, a pesar que falta implementar los métodos setContraseña
y autenticar
en la clase Administrador, se supone que la clase Administrador está obligada a implementar esos métodos de la interface Autenticacion. Se guardaron todos los cambios, e intenté diferentes cosas con tal de obtener el error o descubrir el por qué.
Entonces al borrar "extends Funcionario" el IDE detectó el error:
public class Administrador implements Autenticacion {
private int contraseña;
@Override
public double getBonificacion() {
return 0;
}
}
Y en este caso se muestra el error y la palabra Administrador queda subrayada, y al pasar el mouse por la palabra Administrador el IDE me ofreció la opcion de implementar los métodos de setContraseña
y autenticar
para solucionar el error de compilación.
¿Esto significa que la clase Administrador al heredar los métodos setContraseña
y autenticar
de la clase Funcionario ya no necesita declarar los métodos que debe implementar de la interface Autenticacion? ya que tienen la misma firma, entonces el IDE asume que esos métodos heredados, y a pesar de no estar explícitamente declarados, están a su vez ya siendo implementados de la interface Autenticacion.