我有以下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));
以上三行效果很好 - 换句话说,界面的方法是动态的。为什么变量不一样,有没有解决方法?
答案 0 :(得分:3)
party 是一个私有实例属性,您需要编写一个公共getter来访问它。 此外,您应该实施您的界面,而不是扩展。
我建议用大写字母开始你的类和接口名称,这是Java中的一般命名约定。另一方面,变量不应以大写字母开头。我建议你阅读Code Convention for the Java Programming Language。
public class Citizen implements Person {
public String getParty() {
return party;
}
}