允许我的孩子班级访问父母信息的最佳方法是什么?

时间:2012-03-06 20:10:34

标签: java class parent-child

这是我目前的班级结构。

enter image description here

播放器现在需要GUI和Table上的一些信息。我最好能做到这一点吗?

  • 让桌子静止吗? (只会有一张桌子)
  • 在播放器的构造函数中传递表的实例和相应的席位吗?
  • 将每种玩家方法所需的数据作为参数传递?

如果可能的话,我想避免重构我的代码以包含中间类或类似内容。在这一点上,这将是一个很大的努力。谢谢:))


编辑: 只是为了澄清,因为我的图表是垃圾。 GUI包含一个表格实例,该表格包含10个席位,每个席位可能包含也可能不包含播放器。没有使用继承。

5 个答案:

答案 0 :(得分:1)

我将选择第二个选项,传递表格的实例以及玩家构造函数中的相应位置。

答案 1 :(得分:1)

如果我理解你在做什么,我会认为GUI会有一个表的实例,一个表会有一个座位数组,玩家将被分配一个位于该表的座位数组中的位置。该表可以具有公共方法以向玩家提供玩家可能需要的关于桌子和座位阵列中的其他玩家的信息。 GUI可以通过表格,座位和玩家类别中的公共方法向玩家提供关于桌子和所有玩家的信息。我并不真正看到桌子,座位和玩家如何成为GUI的子类,因为我认为,GUI是一个GUI,除了显示和提供用户输入方式之外没有任何其他功能。

答案 2 :(得分:0)

如果Player扩展了Seat,Seat扩展了Table,而Table扩展了GUI,那么Player应该可以访问其父级中包含的所有(公共)信息。这是面向对象(OO)编程的基本思想。

让表静态可能会长期伤害你。如果将代码重构为上面提到的内容太困难了,那么我建议您使用第二个项目符号(将表和席位传递给Player的构造函数)。

答案 3 :(得分:0)

制作播放器需要保护的字段。这将允许Player访问Table和GUI的信息。

答案 4 :(得分:0)

我最终只是将玩家所需的数据作为参数传递给它的方法。我肯定过度思考,因为我只传递了少量数据。如果所需的数据更广泛,请查看其他答案之一。

这是我的表类中的一个示例方法,它通过调用需要这些变量的Players方法之一将其中两个自己的变量和一个席位变量传递给Player类。

seats[j].getPlayer().raise(raised, seats[j].getPosition(), inPlaySeats);