gpt4 book ai didi

java - 最好将 protected 更改为公共(public)?或创建另一个调用父类(super class)的方法

转载 作者:行者123 更新时间:2023-12-02 04:17:35 24 4
gpt4 key购买 nike

我正在尝试使用据我所知的最佳实践来创建游戏。我有:

  • 一个带有 protected void draw(Canvas c) 函数的 VisibleObject
  • MapTile扩展 VisibleObject 以绘制自身。
  • 一个 Map 类,其中包含 MapTiles、tiles 的 LinkedList。

Map 类中,我想要一个像这样的循环:

public void draw(Canvas c){
for(MapTile tile : tiles){
tile.draw(c);
}
}

但我意识到我无法在每个图 block 上调用绘图,因为它是 VisibleObject 中的 protected 方法。我可以想到 3 种可能的解决方案:

  1. 只需将 VisibleObject 中的 protected 更改为 public 即可。
  2. 创建一个仅调用 super.draw(c) 的 MapTile 公共(public)方法(我认为这是有效的语法?)
  3. 将 Map 中的 for 循环更改为类似这样的内容,我相信这会使其有效。

新循环:

MapTile current;
for(MapTile tile : tiles){
current = tile;
current.draw(c);
}

哪种解决方案是更好的编程实践?

最佳答案

我会选择版本 2。版本 1 会在父级中引入可能不应该存在的访问修饰符(例如从 protectedpublic),而版本3 没有多大意义,因为您仍在使用 MapTile 的实例(即使使用了,它看起来也很尴尬且不自然)。

如果类的任何子类需要公开父类的 protected 方法,最好的想法是创建一个调用父类方法的公共(public)方法。

关于java - 最好将 protected 更改为公共(public)?或创建另一个调用父类(super class)的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12228390/

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