Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么默认情况下不调用构造函数_Java_Constructor - Fatal编程技术网

Java 为什么默认情况下不调用构造函数

Java 为什么默认情况下不调用构造函数,java,constructor,Java,Constructor,我听我的讲师说,在Java中,构造函数在主函数实际启动时被调用。但是当我尝试它时,我知道构造函数不是自动调用的。代码是这样的 class Anther { static void method1(){ System.out.println("this is method"); } static void method2(){ System.out.println("this is second one"); } Ant

我听我的讲师说,在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
为什么它没有打印“另一个类”。

您还没有创建另一个对象。构造函数仅在创建对象时调用


静态资源无需装入对象即可访问。

在创建类实例时会自动调用构造函数

Anther ant = new Anther();
在这里,您正在创建类的实例。此时将调用构造函数

我听我的讲师说,在Java中,构造函数被称为 当主电路真正启动时

我怀疑你的讲师真的会这么说。如果他有,那么他肯定是在什么地方弄错了,或者你可能误解了他

现在,事情是这样的:-

在使用新运算符实例化类之前,不会调用构造函数

因此,在上述情况下,当您使用以下代码时,将调用构造函数:-

Anther obj = new Anther();
在你的主要方法中

在上面的语句中,new操作符创建了另一个对象,并在新创建的实例上调用构造函数来初始化其状态

一定要和你的讲师澄清这件事

试试这个

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");     
    }
-创建类的对象时,总是调用其构造函数

-不仅是它的构造函数,而且是它的超类构造函数,直到调用对象类构造函数为止

-对象的形成从超类流向子类

-您必须调用create另一个类实例,以便调用其构造函数

例如:


默认情况下,只有当我们有类对象的实例时,才会调用构造函数

i、 e

所以,这就是为什么没有调用默认构造函数

静态方法是类变量,它们在调用构造函数之前加载到JVM中

在本例中,超级构造函数超出了范围,之所以调用它是因为另一个类有基类[类A扩展类B]

希望这能消除你的疑虑

谢谢,
Pavan

在google、bing或其他网站上搜索java oop trail:享受阅读吧!在任何情况下,考虑这个反问:java中的静态方法是什么?标记为接受的一个答案:请注意,在没有任何显式超类的情况下,始终存在一个超类。这就是目标。
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");     
    }
Anther obj  = new Anther();