我有下面的Java代碼的子類的變量:訪問經由接口
public interface Person {
int eat (String food);
int sleep (int time);
boolean coitus (person partner);
}
public class Citizen implements Person {
private int passion;
private int morality;
private String party;
public citizen() {
passion = 0;
morality = 100;
party = "Democrat";
}
public boolean coitus (person partner) {
passion += 10;
morality -= 10;
return true;
}
... rest of implementation methods
}
並在主方法中,我有這些行:
Person Jon = new Citizen();
System.out.println(Jon.party);
第二行失敗。我無法通過接口訪問子類的變量。爲什麼是這樣?我們可以用方法很好地做到這一點:
Person Jon = new Citizen();
Person Romney = new Citizen();
System.out.println(Jon.coitus(Romney));
上述三行工作得很好 - 換句話說,接口的方法是動態的。爲什麼它與變量不一樣,有沒有辦法解決這個問題?
嘗試閱讀關於Java約定..類和接口是大寫,變量不是。閱讀代碼更容易。 – porfiriopartida
對不起,我忘了大寫的名字。現在會做。 –