Eu não sei se esta pergunta é válido ou eu estou fazendo algo de errado com a definição da estrutura de classes pai.
Mas o seguinte é a formação das classes e interface.
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);
}
}
saída esperada quando eu chamar o método usando a interface
Test test = new Parent();
test.print();
Ele deve chamar o método da classe Criança de impressão.
E quando eu chamar o método usando a interface
Test test = new Parent();
test.write();
Ele deve chamar o método write da classe pai.
Então, agora isso não está acontecendo, em ambos os casos é chamar o método da classe pai.
Assim, qualquer sugestão ou resposta são muito apreciados.
Usando:
Test test = new Parent();
test.write();
o seu test
é do tipo Parent
e desconhece Child
. Daí a sua saída indica ambos os métodos na Parent
classe são chamados.
Experimentar:
Test test = new Child();
test.print(); // Will call Child::print()
test.write(); // Will call Parent::write()
e você deve conseguir o que deseja.
NB Para que isso funcione, você deve adicionar write()
à sua Test
interface, assim:
public interface Test {
public void print();
public void write(); // This is required for it to be accessible via the interface
}