public class MyClass {
long var;
public void MyClass(long param) { var = param; }//(1)
public static void main(String[] args) {
MyClass a, b;
a =new MyClass();//(2)
b =new MyClass(5);//(3)
}
}
尝试编译以下程序会产生怎么样的结果?()
编译错误将发生在(1),因为构造函数不能指定返回值编译错误将发生在(2),因为该类没有默认构造函数
编译错误将在(3)处发生,因为该类没有构造函数,该构造函数接受一个int类型的参数
该程序将正确编译和执行
答案为第三句
注意:这个public void MyClass(long p)可不是一个构造方法!!!仅仅是一个返回值类型为void的普通方法,一i的那个要记住构造函数的格式
public(或者其他访问修饰符) 类名(参数可有可无){}
该程序中存在一个常见的误解,即`public void MyClass(long param)`被误认为是构造函数。实际上,这是一个带有void返回类型的普通方法,而非构造函数。在Java中,构造函数必须与类名相同且没有返回类型。程序在尝试创建`MyClass`实例时,(2)处使用了无参数构造函数,而类中并未定义,因此会导致编译错误。在(3)处,虽然提供了参数,但由于同样缺乏匹配的构造函数,也会引发编译错误。修正此问题的方法是为类定义正确的构造函数。
2426

被折叠的 条评论
为什么被折叠?



