No sé si esta pregunta es válida o estoy haciendo algo mal con la definición de la estructura de la clase padre.
Pero los siguientes son la formación de las clases y la interfaz son.
public interface Test {
public void print();
public void write();
}
class Parent implements Test{
@Override
public void print() {
System.out.print("This is parent class");
}
@Override
public void write() {
System.out.print("This is write method in parent class");
}
}
class Child extends Parent{
@Override
public void print(){
System.out.print("This is child class);
}
}
Los resultados esperados cuando llamo método que utiliza la interfaz
Test test = new Parent();
test.print();
Se debe llamar al método de impresión de la clase del niño.
Y cuando llamo método de uso de la interfaz
Test test = new Parent();
test.write();
Se debe llamar al método de escritura de la clase padre.
Así que ahora mismo no está sucediendo, en los dos casos se llama al método de la clase padre.
Por lo que cualquier sugerencia o respuesta son muy apreciados.
Mediante el uso:
Test test = new Parent();
test.write();
tu test
es de tipo Parent
y no es consciente de Child
. De ahí que su salida indica ambos métodos en la Parent
clase se llaman.
Tratar:
Test test = new Child();
test.print(); // Will call Child::print()
test.write(); // Will call Parent::write()
y se debe lograr lo que quiere.
Nota: Para que esto funcione, debe agregar write()
a su Test
interfaz, por lo tanto:
public interface Test {
public void print();
public void write(); // This is required for it to be accessible via the interface
}