Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 对超级参数使用null_Java - Fatal编程技术网

Java 对超级参数使用null

Java 对超级参数使用null,java,Java,如果一个抽象超类有一个只定义初始字段参数的构造函数,而其中一个子类在初始化时不使用字段参数,我可以简单地在super()调用中未使用的字段参数所在的位置加上一个“null”吗 为了更清楚地说明这一点,以下是一个示例: public abstract class SuperClass { protected int xPos; protected int yPos; protected int zPos; public SuperClass(int xPos,

如果一个抽象超类有一个只定义初始字段参数的构造函数,而其中一个子类在初始化时不使用字段参数,我可以简单地在super()调用中未使用的字段参数所在的位置加上一个“null”吗

为了更清楚地说明这一点,以下是一个示例:

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()的情况下为子类定义构造函数,会不会更好?这个设计好吗?如果有什么不同的话,这两个类看起来更像是翻转的。超类应该是子类,反之亦然。但总的来说,如果你真的不需要遗产,遗产会给你带来很多痛苦;也许你应该问问你是否只需要两个没有连接的类。