如何在Java中调用构造函数

如何在Java中调用构造函数,java,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类的构造函数?如果构造函数有参

我有以下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
类的构造函数?

如果构造函数有参数,请使用它:

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对象以
    大写字母开始,因此文件和类的名称应该是
    Display
    Abc
    (或
    Abc
  • 如果您没有将任何代码放入Constructor,请不要创建它
  • java提供了一个默认的空构造函数,在您不创建任何对象时实例化您的对象

如果您在类中不提供构造函数,编译器默认不插入参数构造函数,但如果您提供了,则编译器不会插入默认构造函数。在这里,您正在创建一个类的对象,其中存在参数化构造函数,并且您正在创建没有参数的ABC类对象,因此编译器无法找到无参数构造函数,因此在下面给出了错误代码,可以解决这个难题

    public abc()    // another constructor
    {

    }
或更改创建类型

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

这里调用的是默认构造函数,它不在abc类中。而是有一个参数化的构造函数

public static void main(String[] args) {
    abc ob = new abc();   // error
} 
这里你要创建一个没有参数的对象

所以你应该把这样的东西递给我

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

我们可以用两种方式定义构造函数: (i) 默认构造函数 (二)参数化建造师

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

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

*调用构造函数的语法 ClassName引用变量=新类型的构造函数()

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


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

new abc()
您可以在自己的代码中使用您喜欢的任何编码约定,但在寻求帮助时,我建议使用标准命名约定。Java类名以大写字母开头,因此
Abc
Sample
Display
。了解Java命名约定。类名应以大写值
new abc()开头
确实调用了构造函数,您的问题是它试图调用一个不存在的构造函数。当您显式声明类的构造函数时,编译器将停止为您提供免费的无参数构造函数。您需要显式地添加一个no-args构造函数,以便可以调用它,或者需要提供调用时定义的构造函数所需的参数。