如何在Java中最好地解释和使用空构造函数?

Sop*_*Ngo 8 java constructor

我一直在自学Java.我理解定义类的范围,但仍然没有得到空构造函数用法的概念.
通常我们应该传递构造函数的参数来构建实例对象.但是,我经常看到构造函数的空参数.例如:

 class Person {
   String name;
       int age; 

 public Person();

 public Person(String name, int age){
     this.name = name;
     this.age = age;
     } 
 }
Run Code Online (Sandbox Code Playgroud)

我研究并阅读了一个使用"鱼"类来解释的例子.所以,这就是我到目前为止所理解的:在定义类时,我们首先定义一个对象的属性,然后我们创建一个构造函数,用于使用方法构建对象.空构造函数构建GENERIC对象,以及带参数的构造函数构建具有更多特定信息的对象.让我们说上面的例子,如果我使用空构造函数创建一个实例对象:

Person p1 = new Person();  
Run Code Online (Sandbox Code Playgroud)

- 它仍会创建一个对象,但没有任何属性?那么,究竟空构造函数用于什么?我在很多示例代码中看到了它.它非常有用/常见吗?

感谢您的回答!

tbo*_*odt 10

定义默认构造函数有三个常见原因:

  • 构造具有默认值的对象.
  • 初始化在初始化过程中不需要参数的对象.
  • 重新定义构造函数的范围.使构造函数私有将阻止除类本身之外的任何人构造对象.


jse*_*ano 5

如果使用参数编写构造函数,则需要声明默认构造函数(如果要使用它)

class Person {
    String name;
    int age; 

    public Person(String name, int age){
        this.name = name;
        this.age = age;
    } 
 } 
Run Code Online (Sandbox Code Playgroud)

您现在不能执行以下操作:

Person p = new Person();
Run Code Online (Sandbox Code Playgroud)

为了使用“默认”构造函数(不带参数),您需要对其进行声明:

class Person {
    String name;
    int age; 

    public Person(){
        name = "Man With No Name";  //sometimes you will want to set the variables 
        age = 21;     //to some default values
    }

    public Person(String name, int age){
        this.name = name;
        this.age = age;
    } 
 } 
Run Code Online (Sandbox Code Playgroud)


por*_*ida 2

空的构造函数通常是“默认的”

Person() { 
    // This will cause you to not have any name or age values
}
Run Code Online (Sandbox Code Playgroud)

因此,我们假设您想要一个默认的 Person:

Person() { 
    this("Steven",20);
}
Run Code Online (Sandbox Code Playgroud)

这样你将调用非空构造函数,但你将始终拥有同一个人