先看代碼
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。