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

2022-09-04 06:42:41

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

 class Person {
   String name;
       int age; 

 public Person();

 public Person(String name, int age){
     this.name = name;
     this.age = age;
     } 
 }

我研究并阅读了一个使用类“鱼”来解释的例子。所以,这就是我到目前为止所理解的:在定义一个类时,我们首先定义一个对象的属性,然后我们创建一个构造函数,它将使用方法构建对象。空构造函数生成 GENERIC 对象,带参数的构造函数生成具有更具体信息的对象。假设上面的例子,如果我使用空构造函数创建一个实例对象:

Person p1 = new Person();  

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

感谢您的查看和回答!


答案 1

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

class Person {
    String name;
    int age; 

    public Person(String name, int age){
        this.name = name;
        this.age = age;
    } 
 } 

您现在无法执行此操作:

Person p = new Person();

为了使用“默认”构造函数(没有参数),您需要声明它:

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;
    } 
 } 

答案 2

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

  • 使用默认值构造对象。
  • 初始化该初始化过程中不需要参数的对象。
  • 重新定义构造函数的作用域。将构造函数设为私有将阻止除类本身以外的任何人构造对象。