gpt4 book ai didi

java - 声明子类中需要存在的字段的正确方法?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:39:55 27 4
gpt4 key购买 nike

假设我有一个类 Animal,然后是一堆扩展 Animal 的子类。假设我想要一个名为 name 的公共(public)字段,它也应该存在于每个子类中。在每个子类中包含和初始化该字段的正确方法是什么?

1) 将父类中的字段声明为protected,然后在每个子类中对其进行初始化。如果我这样做,将该字段称为 super.variable 还是简单地称为 variable 是否合适?就我个人而言,使用 super 可以更明显地看出该字段是在父级中声明的。 (这是我目前正在做的)

2) 声明parent中的字段为private,然后创建getterssetters来访问该字段

3) 只需在每个子类中声明并初始化相同的变量

4) 我缺少的另一种方法?

感谢您的帮助。我知道这个问题很基础,但我很好奇最合适的风格是什么。

编辑:

我不确定你们是否会看到这个,但这是一个后续问题。

有没有什么好的方法可以保证子类初始化字段?

最佳答案

答案取决于您是否需要控制对该字段的访问以确保正确性(例如,以确保其他一些字段同时得到更新)。如果子类可以直接转动该字段,那么只需使用 protected。如果您需要在设置该字段时执行额外的检查或操作,您应该将其设置为 private 给父类(super class),并让子类使用 setter 来确保您的逻辑运行。如果您知道总是需要该字段,则不应复制该字段;如果您不确定,那么您应该考虑使用 interface Animal 并将字段放在 AbstractAnimal implements Animal 上。

在 Java 中,super 除了调用父类(super class)的方法之外,不用于任何其他用途。直接访问protected字段;这就是它们的用途,如果您需要知道,您的开发环境将跟踪它们的声明位置。

关于java - 声明子类中需要存在的字段的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18006786/

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