是否生成了默认构造函数?

时间:2014-12-18 11:40:42

标签: java

在以下程序中,display方法不是Student4构造函数的一部分。那么,当使用Student4构造函数对象调用方法显示时,默认构造函数是否会调用显示方法?

class Student4 {  
    int id;  
    String name;  

    Student4(int i,String n){  
        id = i;  
        name = n;  
    }

    void display() {
        System.out.println(id+" "+name);
    }

    public static void main(String args[]) {
        Student4 s1 = new Student4(111,"Karan");
        Student4 s2 = new Student4(222,"Aryan");
        s1.display();
        s2.display();
   }
}  

5 个答案:

答案 0 :(得分:6)

  

因此,使用Student4构造函数调用方法显示时   对象是否默认构造函数调用显示方法?

没有。由于显式声明了您自己的参数化构造函数,因此您的类中没有默认构造函数。 默认构造函数是没有参数的构造函数。

方法永远不是构造函数的一部分。构造函数是一种特殊方法,用于设置字段变量的初始值。构造函数用于创建类的实例,因此在创建对象时,Java首先调用构造函数。

答案 1 :(得分:1)

  

因此,使用Student4构造函数调用方法显示时   对象

您没有使用display来调用the Student4 constructor函数,而是使用您使用自定义构造函数构建的对象s1s2

答案 2 :(得分:0)

 Student4(int i,String n){  
    id = i;  
    name = n;  
    display();
 }  

现在,您的自定义构造函数中会调用您的显示方法。干杯!

答案 3 :(得分:0)

据我所知,如果你没有定义任何显式构造函数,那么将创建默认构造函数。这里你已经声明了一个参数化的构造函数,所以在这里它不会创建任何默认的构造函数。

答案 4 :(得分:0)

如果没有在类中定义构造函数,Java会创建默认构造函数,但如果定义了参数化构造函数,则必须创建默认构造函数

public static void main(String args[]) {
        Student4 s1 = new Student4(111,"Karan");
        Student4 s2 = new Student4(222,"Aryan");
        s1.display();
        s2.display();

       // if you create default constructor it will give you compile time issue
       // The constructor Student4() is undefined
        Student4 s3 = new Student4();
   }

当您创建任何类的实例时,属性和方法是对象的一部分,因此您的对象负责调用您的方法而不是构造函数。

相关问题