次の 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);
2 行目は失敗します。インターフェイス経由でサブクラスの変数にアクセスできません。どうしてこれなの?これは、メソッドを使用して問題なく実行できます。
Person Jon = new Citizen();
Person Romney = new Citizen();
System.out.println(Jon.coitus(Romney));
上記の 3 行は問題なく機能します。つまり、インターフェイスのメソッドは動的です。変数と同じではないのはなぜですか?これを回避する方法はありますか?