// Interfaz para Login
interface ILogin {
boolean validarCredenciales(String usuario, String contraseña);
void mostrarInformacion();
}
// Clase base Login
abstract class Login implements ILogin {
protected String usuario;
protected String contraseña;
public Login(String usuario, String contraseña) {
[Link] = usuario;
[Link]ña = contraseña;
}
@Override
public boolean validarCredenciales(String usuario, String contraseña) {
return [Link](usuario) && [Link]ñ[Link](contraseña);
}
@Override
public abstract void mostrarInformacion();
}
// Clase Cliente que hereda de Login
class Cliente extends Login {
public Cliente(String usuario, String contraseña) {
super(usuario, contraseña);
}
@Override
public void mostrarInformacion() {
[Link]("Cliente: " + usuario);
}
}
// Clase Administrador que hereda de Login
class Administrador extends Login {
public Administrador(String usuario, String contraseña) {
super(usuario, contraseña);
}
@Override
public void mostrarInformacion() {
[Link]("Administrador: " + usuario);
}
}
// Clase principal
public class Main {
public static void main(String[] args) {
Login cliente = new Cliente("cliente123", "passCliente");
Login administrador = new Administrador("admin123", "passAdmin");
// Probar el login con wildcards
realizarLogin(cliente, "cliente123", "passCliente");
realizarLogin(administrador, "admin123", "passAdmin");
}
// Método que recibe cualquier objeto Login o sus subclases
public static void realizarLogin(ILogin login, String usuario, String
contraseña) {
if ([Link](usuario, contraseña)) {
[Link]("Login exitoso para: " + usuario);
[Link]();
} else {
[Link]("Credenciales incorrectas para: " + usuario);
}
}
}