假设我有一个班级
public class Child {
public Child(Object arg1) {
super(arg1);
}
}
我有一个父类
public class Parent {
Object object;
public Parent(Object arg1) {
this.object=arg1;
}
}
所以我的问题是更好的编码实践
OR
为了清楚起见,我们说目前孩子不需要这个论点。
答案 0 :(得分:1)
如果孩子不需要它,肯定是2号。 这是基于让孩子 延伸 父母。
但是,如果Child真的不需要它,那么你应该将它作为私有字段,并通过公共构造函数设置它,否则为什么要通过Child初始化这个变量?
答案 1 :(得分:0)
这里没有说这篇文章的意思。在您的情况下,Object
的{{1}}为Parent
。如果它是default
并且您要初始化private
的{{1}},则必须在Object
中致电Parent
。如果super(arg1)
Child(Object arg1)
的访问权限为Object
或Parent
,则public
允许protected
访问Parent
,则Child
或Object
在这里没有区别。因此,您可能需要告诉super.object
super(arg1)
protected
和public
等访问权限的区别,请检查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()