我听说我的讲师说在Java中,构造函数在实际主要启动时被调用。但是当我试验它时,我才知道构造函数不是自动调用的。代码是这样的。
class Anther {
static void method1(){
System.out.println("this is method");
}
static void method2(){
System.out.println("this is second one");
}
Anther(){
System.out.println("Anther class");
}
public static void main(String[] args){
System.out.println("first line");
method1();
System.out.println("second line");
method2();
System.out.println("end of story");
}
}
输出就像这样
first line
this is method
second line
this is second one
end of story
为什么它没有打印'花药类'。
答案 0 :(得分:4)
您尚未创建Anther
个对象。只有在创建对象时才会调用构造函数。
static
个资源。
答案 1 :(得分:4)
我听说我的讲师说在Java中调用了构造函数 什么时候主要开始。
我怀疑你的讲师会不会真的这么说。如果他有,那肯定他可能在某个地方弄错了,或者你可能误会了他
现在,事情就是这样: -
在使用
实例化类之前,不会调用构造函数new
运算符
因此,在上面的例子中,当您使用以下代码时将调用构造函数: -
Anther obj = new Anther();
在您的main
方法中。
在上面的语句new
中,运算符创建了一个Anther
的对象,并在新创建的实例上调用构造函数来初始化其状态。
与你的讲师一起澄清这件事。
答案 2 :(得分:0)
在创建类的Instance
时会自动调用构造函数。
Anther ant = new Anther();
在这里,您将创建该类的实例。此时将调用构造函数。
答案 3 :(得分:0)
试试这个
public static void main(String[] args){
Anther a = new Anther();//you shoule create instance;
System.out.println("first line");
method1();
System.out.println("second line");
method2();
System.out.println("end of story");
}
答案 4 :(得分:0)
- 当您创建类的对象时,始终会调用其构造函数。
- 不仅其 contructor
,还要调用超类构造函数,直到调用Object Class构造函数。 < / p>
- object
的形成从Super class流向Sub class。
- 您必须调用创建Anther class
实例,以便调用其构造函数。
<强>例如强>
public static void main(String[] args){
Anther a = new Anther(); // Creation of an object of class Anther
System.out.println("first line");
method1();
System.out.println("second line");
method2();
System.out.println("end of story");
}
答案 5 :(得分:0)
默认情况下,只有当我们有类对象的实例时才会调用构造函数。
我,e
Anther obj = new Anther();
所以,这就是为什么default
构造函数没有被调用的原因。
static methods
是在调用构造函数之前在JVM
加载的类变量。
super constructor
在此示例中超出范围,因为此Anther类[Class A extends Class B]
希望这能清除你的怀疑。
谢谢, 帕