gpt4 book ai didi

java - 通过接口(interface)访问子类变量

转载 作者:行者123 更新时间:2023-12-01 23:32:53 25 4
gpt4 key购买 nike

我有以下 Java 代码:

public interface Person {
int eat (String food);
int sleep (int time);
boolean doStuff (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 doStuff (person partner) {
passion += 10;
morality -= 10;
return true;
}
... rest of implementation methods
}

在主方法中,我有以下几行:

 Person Jon = new Citizen();
System.out.println(Jon.party);

第二行失败。我无法通过接口(interface)访问子类的变量。为什么是这样?我们可以用方法很好地做到这一点:

 Person Jon = new Citizen();
Person Romney = new Citizen();
System.out.println(Jon.doStuff(Romney));

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

最佳答案

party是一个私有(private)实例属性,您需要编写一个公共(public)getter来访问它。另外,您应该实现您的界面,而不是扩展它。

我建议您的类和接口(interface)名称以大写字母开头,这是 Java 中的通用命名约定。另一方面,变量不应以大写字母开头。我建议您阅读Code Convention for the Java Programming Language .

public class Citizen implements Person {
public String getParty() {
return party;
}
}

关于java - 通过接口(interface)访问子类变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19076088/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com