假设我有一个类 Animal
,然后是一堆扩展 Animal
的子类。假设我想要一个名为 name
的公共(public)字段,它也应该存在于每个子类中。在每个子类中包含和初始化该字段的正确方法是什么?
1) 将父类中的字段声明为protected
,然后在每个子类中对其进行初始化。如果我这样做,将该字段称为 super.variable
还是简单地称为 variable
是否合适?就我个人而言,使用 super 可以更明显地看出该字段是在父级中声明的。 (这是我目前正在做的)
2) 声明parent中的字段为private
,然后创建getters
和setters
来访问该字段
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/