如果下面是一個奇怪的行爲,我只是在漫遊。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 2014-10-22 10:44:58
只是.. :)意識到我使用了錯誤的按鈕感謝評論 – Tharanga 2014-10-22 10:46:10
它從抽象類繼承。所以AbstractClass就像Parent,而你的InterfaceImplementer是你抽象類的孩子。所以它的孩子(比如說人類孩子)從他/她的父母身上繼承基因和一些特徵。 – SMA 2014-10-22 10:49:51