是否应在子类或父类中传递参数

时间:2015-04-17 09:02:09

标签: java

假设我有一个班级

public class Child {
    public Child(Object arg1) {
        super(arg1);
    }
}

我有一个父类

public class Parent {
    Object object;
    public Parent(Object arg1) {
        this.object=arg1;
    }
}

所以我的问题是更好的编码实践

  1. 在子项中插入参数,然后将其传递给父项
  2. OR

    1. 在不经过子项的情况下将参数插入父级本身。
    2. 为了清楚起见,我们说目前孩子不需要这个论点。

3 个答案:

答案 0 :(得分:1)

如果孩子不需要它,肯定是2号。 这是基于让孩子 延伸 父母。

但是,如果Child真的不需要它,那么你应该将它作为私有字段,并通过公共构造函数设置它,否则为什么要通过Child初始化这个变量?

答案 1 :(得分:0)

这里没有说这篇文章的意思。在您的情况下,Object的{​​{1}}为Parent。如果它是default并且您要初始化private的{​​{1}},则必须在Object中致电Parent。如果super(arg1) Child(Object arg1)的访问权限为ObjectParent,则public允许protected访问Parent,则ChildObject在这里没有区别。因此,您可能需要告诉super.object super(arg1) protectedpublic等访问权限的区别,请检查here

答案 2 :(得分:0)

根据您的代码的外观,调用super会导致错误,您需要将您的Child扩展到父级,即

    public class Child extends Parent{
...
   }

因为您为父级创建了一个构造函数:

public Parent(Object arg1)

默认情况下,no-arguement构造函数已经消失。 如果Parent需要这个对象,那么在创建Child时会如何初始化Parent?

  public Child() {
    super(); //ERROR
  }

super()现在无法工作,因为您使用参数为父级创建了构造函数。超级正在寻找没有争论的Parent()