没有默认构造函数的类

时间:2019-07-02 08:41:03

标签: java

使用参数化构造函数时是否需要声明默认constructor

我们可以创建该class的参数化对象,并且该对象可用于调用该类的其他函数,那么为什么需要默认构造函数?

public class Const {
    Const(int s,int  t) {
       int b=s+t;
       System.out.println(b);
    }

    public int add(int a) {
        int j = 9;
        j=j+a;
        return j;
    }
}

public class Construct {
    public static void main(String[] args) {
        Const obj =new Const(5,9);

        obj.add(55);
    }
}

这里我们不需要默认的构造函数。我们不能带着这个东西去吗?

3 个答案:

答案 0 :(得分:0)

在我们的项目结构中实现继承时,我们需要默认的构造函数。

示例:

Class Apple{
    Apple(){}

    Apple(String a){
       System.out.pritnln(a);
    }
}

Class Banana extends Apple{
    Banana(){}

    public static void main(String[] args){
       Apple("Eaten");
    }
}

在上述情况下,如果您不为类Apple声明任何默认构造函数,则它将引发错误:
Implicit super constructor Apple() is undefined for default constructor. Must define an explicit constructor

因为类Banana将始终尝试调用未参数化的超级构造函数,并且如果您声明了一个参数化的构造函数,则必须声明默认的构造函数。

答案 1 :(得分:0)

您的代码完全正确。完全不需要默认构造函数。您甚至可以将所有构造函数设为私有,以便您无权访问任何构造函数:

public class PrivateClassTest
{
    // Default constructor that is not accessible by others
    private PrivateClassTest()
    {
    }
}

答案 2 :(得分:0)

构造函数用于初始化对象。换句话说,构造函数为对象提供内存。如果不初始化对象,我们将无法使用其属性。

但是不需要在Java中定义或声明默认构造函数。如果我们尚未声明或定义默认构造函数,则编译器会在其中隐式添加默认构造函数。