什么是Java中的构造函数,为什么要自己编写?

jaql4c8m  于 2023-05-05  发布在  Java
关注(0)|答案(1)|浏览(139)

我不明白为什么要写自己的构造函数,如果java编译器已经这样做了。写自己的理由/好处是什么?
这是一个Java中的构造函数的例子:

class A{
    
    A(int a){
        
      System.out.println("A");
    
    }

}

class ConstructorDemo1{

    public static void main(String[] args){
    
        A a1 = new A(1000);
    }

}
xghobddn

xghobddn1#

请考虑以下情况。

class Foo {
   private int a;
   private int b;
   Foo() {}  // only constructor and is created by compiler
   public void setA(int aval) {
      a = aval;
   }
   public void setB(int bval) {
      b = bval;
   }
}

下面是如何设置上述值。

Foo foo = new Foo(); // uses default constructor
foo.setA(10);
foo.setB(20);

现在将这些构造函数添加到上面的

Foo() {} // must be added manually now since you
         // are adding your own constructor.  If you don't you
         // must use the argument version to create an instance
Foo(int a, int b) {
   a = aval;
   b = bval;
}

并创建一个这样的示例。

Foo f = new Foo(10,20);  // tada! values are set.

如果包含了默认构造函数,您仍然可以像第一个示例中那样初始化值。设置器允许您随时更改它们。
不包括在示例中,但您必须使用getters来检索声明为private的值。声明字段为private隐藏了实现细节,还允许对字段强制约束。

相关问题