0

我有以下 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));

上面三行工作得很好——换句话说,接口的方法是动态的。为什么它与变量不一样,有没有办法解决这个问题?

4

1 回答 1

3

party是一个私有实例属性,您需要编写一个公共 getter 来访问它。此外,您应该实现您的接口而不是扩展它。

我建议以大写字母开头类和接口名称,这是 Java 中的通用命名约定。另一方面,变量不应以大写字母开头。我建议您阅读Java 编程语言的代码约定

public class Citizen implements Person {
     public String getParty() {
         return party;
     }    
}
于 2013-09-29T08:48:24.797 回答