作为我家庭作业的一部分,我得到了一个已经准备好的 public static void main 方法。我的工作是通过创建与此相关的所有方法来补充这一点。这应该在其他三个类(class)中完成。
在已经准备好的main方法中,有如下代码:
ticket = new LotteryTicket(10);
ticket.ticketOwner = new Player();
LotteryTicket
和 Player
是我创建的其他类。 LotteryTicket
类中的相关实例变量是:
private LotteryRow[] rows;
private Player ticketOwner;
public LotteryTicket(int maxNumberOfRows) {
this.rows = new LotteryRow[maxNumberOfRows];
}
如前所述,Player
是我创建的另一个类。在这个类中,除其他外,还有一个方法供用户输入姓名、地址、邮政编码等数据。
当我尝试运行该程序时,ticket.ticketOwner = new Player();
行出现错误。错误是:“字段 LotteryTicket.ticketOwner
不可见”
这可能是什么原因造成的?我将不胜感激任何帮助!我希望我提供的代码足够了。我以前没有遇到过这个错误消息,所以我不知道该怎么做。
最佳答案
问题的核心是您尝试访问的字段 (ticketOwner
) 被标记为 private
。此外,至少从我们看到的任何内容来看,似乎缺少用于访问它的 getter/setter。
虽然对此的快速修复是添加 getter/setters
并使用它们访问字段,或者一个丑陋的方法是使字段 public
。但是你会想继续阅读......
你最好的选择(如果 Player 对于 LotteryTicket 是必需的,看起来是这样)是在 LotteryTicket
本身的构造函数中拥有 Player
实例,所以有没有额外的开销。
public LotteryTicket(int maxNumberOfRows, Player player) {
this.rows = new LotteryRow[maxNumberOfRows];
this.ticketOwner = player;
}
编辑
你的调用看起来像这样:
Player p = new Player();
// invoke APIs on (Player p), if needed
ticket = new LotteryTicket(10, p);
关于Java - 字段不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7703439/