如何在Java中调用构造函数

时间:2016-08-18 10:24:26

标签: java

我在java中有以下代码:

// SingleMaltView class
class abc {
    public abc(display p) {
        // display is another class.
    }
}

class sample {
    public static void main(String[] args) {
        abc ob = new abc(); // error
    }
}

如何调用abc类的构造函数?

4 个答案:

答案 0 :(得分:4)

你的构造函数有一个参数/参数,使用它:

public abc(display p)
//         ↑  here!!!!

这意味着你必须提供一个display对象来创建abc对象,所以在main方法中你必须做出类似的东西:

public static void main(String[] args) {
    display d = new display(); // assuming display has no-argument constructor
    abc ob = new abc(d);   // NO error! :)
}

注意:

    按照惯例,
  • java对象从UPPERCASE开始,因此文件和类的名称应为DisplayAbc(或ABC)。
  • 如果您没有将任何代码放入constrctor,请不要创建它
  • java提供了一个默认的空构造函数,用于在您不创建任何对象时实例化。

答案 1 :(得分:0)

如果你不在类中提供构造函数,编译器默认情况下不会插入任何参数构造函数,但如果你已经提供,那么编译器不会插入默认构造函数。在这里,您要创建一个类的对象,其中存在参数化构造函数,并且您正在创建没有参数的类ABC的对象,因此编译器无法找到任何参数构造函数,因此在代码下面会出现错误,可以解决这个问题。

    public abc()    // another constructor
    {

    }

或更改创建类型

     public static void main(String[] args)
     {
              Display d =new Display();
              abc ob = new abc(d);   // error
     }

答案 2 :(得分:0)

这里您调用的是 abc class 中没有的默认构造函数。相反,你有一个参数化的构造函数。

public static void main(String[] args) {
    abc ob = new abc();   // error
} 

在这里你要创建一个没有参数的对象。

所以你应该传递这样的东西,

display obj = new display();
abc ob = new abc(obj);

答案 3 :(得分:0)

我们可以通过两种方式定义构造函数: (i)默认构造函数 (ii)参数化的构造函数

(i)默认构造函数语法: ConstructorName() {声明..}

(ii)参数化的构造函数语法: ConstructorName(参数/参数) {声明..}

*调用构造函数的语法 ClassName参考变量=新的TypeOfConstructor()

*要调用在作用域下定义的构造函数的变量和方法,请使用引用变量进行调用。

注意:构造函数没有任何返回类型和访问说明符