Java 对超级参数使用null
如果一个抽象超类有一个只定义初始字段参数的构造函数,而其中一个子类在初始化时不使用字段参数,我可以简单地在super()调用中未使用的字段参数所在的位置加上一个“null”吗 为了更清楚地说明这一点,以下是一个示例:Java 对超级参数使用null,java,Java,如果一个抽象超类有一个只定义初始字段参数的构造函数,而其中一个子类在初始化时不使用字段参数,我可以简单地在super()调用中未使用的字段参数所在的位置加上一个“null”吗 为了更清楚地说明这一点,以下是一个示例: public abstract class SuperClass { protected int xPos; protected int yPos; protected int zPos; public SuperClass(int xPos,
public abstract class SuperClass {
protected int xPos;
protected int yPos;
protected int zPos;
public SuperClass(int xPos, int yPos, int zPos) {
this.xPos = xPos;
this.yPos = yPos;
this.zPos = zPos;
}
... getters & setters, etc.
}
public class SubClass extends SuperClass {
public SubClass(int xPos, int yPos) {
super(xPos, yPos, null);
}
}
这可以接受吗?这是好的编码实践吗?还是让多个构造函数接受不同类型的参数更好 不能将
null
分配给int类型
我建议有几个施工人员。通过这种方式,您可以控制类内的“uninitialized”参数,这将简化维护和可读性如果它是基元类型,则设置为
零
。不能设置为null
,因为这是一个原语(int
),不能将其设置为null
而且,必须做这样的事情是一种很糟糕的设计“味道”。如果子类不需要超类的某些功能,那么很有可能在这里颠倒层次结构。子类实际上应该是其父类的一切,甚至更多
看起来子类应该是超类,反之亦然,至少在您列出的示例中是这样。在讨论编码实践之前,您会遇到编译错误。只需将其设置为一些合理的默认值。无法将int设置为
null
…如果它是可接受的编译器。如果我没有为超类定义构造函数,并且在不调用super()的情况下为子类定义构造函数,会不会更好?这个设计好吗?如果有什么不同的话,这两个类看起来更像是翻转的。超类应该是子类,反之亦然。但总的来说,如果你真的不需要遗产,遗产会给你带来很多痛苦;也许你应该问问你是否只需要两个没有连接的类。