【问题标题】:Superclass has subclass reference超类有子类引用
【发布时间】:2011-10-04 04:30:31
【问题描述】:

我有一种情况,我必须为超类中的子类引用放置 getter 和 setter。我只需要知道这是否是一种好习惯?

我已经给出了下面的代码。

public class SuperClass{
 String commonProperty;
 private BaseClass baseClass;

 public void setBaseClass(BaseClass baseClass){
  this.baseClass = baseClass;
 }

 public BaseClass getBaseClass(){
  return this.baseClass;
 }

}


public classs BaseClass extends SuperClass{
 String uncommonProperty;



}

【问题讨论】:

  • 小心混淆基类和子类。基类通常与超类的含义相同,所以我认为您的意思是在这里使用子类。

标签: inheritance object-oriented-analysis


【解决方案1】:

代码味道表明您的设计有问题。正如@Ben 所说,我们不知道您的具体情况。但是,既然你在问这个问题,我猜你觉得有 something 错了。你是对的。

重申一下,子类继承自超类,因此按照面向对象语言的基本工作方式,您不应该需要这种引用。

【讨论】:

    【解决方案2】:

    通常这是不好的做法,因为超类不必知道是谁在扩展它。此外,这只会将您限制为一个子类。您可以使用反射来查找所有子类,但这通常也表明设计不佳。

    在不知道具体细节的情况下,我很容易认为你真的不需要这样做。

    【讨论】:

      【解决方案3】:

      这不是最好的编码或设计实践,因为 Super 类不需要任何子类,只有 subclasses 必须知道 superclass

      【讨论】:

        猜你喜欢
        • 2016-05-27
        • 2015-03-09
        • 1970-01-01
        • 2018-08-22
        • 1970-01-01
        • 1970-01-01
        • 2017-04-30
        • 2023-04-11
        • 2014-12-28
        相关资源
        最近更新 更多