Java裏面接口的多態機制問題

先看代碼

interface Persons {

public final static String name = "PersonsName";
public void eat();
}


class Student implements Persons {
private String name = "Chen";
Student(String name) {
this.name = name;
}

public void eat() {
System.out.println("人吃東西");
}
}


class TestMember {
public static void main(String[] args) {
Persons p = new Student("Chen");
p.eat();
System.out.println(p.name);
}

}


打印結果是:人吃東西
  PersonsName

在接口中對方法的調用相當如“強制轉化無效”,但是對成員變量卻不是這個樣子的。

這裏可以看成Student p = new Student("Chen");然後強制把Student轉換成爲Persons類型,但是遵循“強制轉化無效”這一原則,我們可以說他依舊是一個學生,所以在調用方法的時候這能調用Student的方法。但是成員變量就不同了,這個時候和方法調用相反,這個時候他是Person類型了,當打印p.name的時候就不是學生名字Chen 而是接口裏面的PersonsName。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章