我在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
类的构造函数?
答案 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! :)
}
注意:
UPPERCASE
开始,因此文件和类的名称应为Display
和Abc
(或ABC
)。答案 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()
*要调用在作用域下定义的构造函数的变量和方法,请使用引用变量进行调用。
注意:构造函数没有任何返回类型和访问说明符