何时使用protected关键字访问超类属性?

时间:2018-02-18 12:51:07

标签: java inheritance subclass encapsulation superclass

在从子类访问超类的方法和属性的领域中,根据principle of least privilege,我看到了三个解决方案,按照优先级的降序排列。

  1. 尽可能使用带有super关键字的超类'逻辑方法,以避免子类'逻辑方法中的冗余
  2. 使用公共超类'getter方法从超类检索私有属性到子类
  3. 在超类'属性中使用protected关键字而不是private,仅适用于需要从子类/包访问的
  4. 我的问题:我无法想到一个人不得不求助于3.因为public(甚至protected}吸气剂总是更多理想的(在我看来)总是一个用于在子类级别检索超类属性的选项。什么时候将超类的属性设置为protected对于这种情况是否必要?如果有的话?

1 个答案:

答案 0 :(得分:0)

客观地说,标记字段given types; required: java.util.List<T>,T found: java.util.List<com.company.Main.B>,com.company.Main.B reason: inferred type does not conform to equality constraint(s) inferred: com.company.Main.A equality constraints(s): com.company.Main.A,com.company.Main.B 可能永远不会必要,而不是在适当的情况下使其成为protected并提供访问者(private或其他)。

根据他们对所涉及权衡的看法,程序员可能会出于以下几种原因选择这样做,但客观地说,我怀疑它实际上是必要(在技术意义上你是别无选择,只能去做。)