Я просто блуждаю, если следующее нечетное поведение.Java-тестирование результатов интерфейса Нечетное поведение
public interface TestInterfaceTwo {
public void sayBye();
}
public interface TestInterfaceOne {
public void sayHI();
}
public abstract class TestIntefaceClass implements TestInterfaceOne, TestInterfaceTwo {
@Override
public void sayHI() {
System.out.println("HI");
}
@Override
public void sayBye() {
System.out.println("Bye");
}
}
public class InterfaceImplementer extends TestIntefaceClass{
@Override
public void sayHI() {
System.out.println("SAY HI");
}
}
public static void main(String[] args) {
InterfaceImplementer impl = new InterfaceImplementer();
TestInterfaceOne impl1 = new InterfaceImplementer();
TestInterfaceTwo impl2 = new InterfaceImplementer();
TestIntefaceClass impl3 = new InterfaceImplementer();
impl.sayHI();
impl.sayBye();
impl1.sayHI();
impl2.sayBye();
impl.sayBye();
impl3.sayBye();
impl3.sayHI();
}
Эти вызовы приводят следующие
SAY HI
Bye
SAY HI
Bye
Bye
Bye
SAY HI
мне нужно знать, если экземпляры интерфейса наследуют только ожидаемое поведение из интерфейса или, если он наследует абстрактный класс. Кажется, он делает последнее, и я хотел бы узнать объяснение этого, и если это ошибка или особенность. :)
1. сделайте свой код доступным для чтения, 1 команду за строку !!! 2. добавьте свой вопрос, я не могу понять, что у вас спрашивает – Dima
Просто сделал .. :) понял, что я использовал неправильную кнопку Спасибо за комментарий – Tharanga
он наследует от абстрактного класса. Таким образом, AbstractClass похож на Parent, а ваш InterfaceImplementer является дочерним элементом вашего абстрактного класса. Таким образом, его ребенок (скажем, человеческий ребенок) наследует гены и некоторые особенности от своих родителей. – SMA