当setter
处理为私有变量赋值时,为什么需要constructor
方法。
有什么区别?
public class Account {
private String name;
public Account(String name)
{
this.name = name;
}
public void setName(String Name)
{
this.name = name;
}
public String getName()
{
return name + " is the best";
}
答案 0 :(得分:4)
构造函数参数最适用于必填字段。您无法提供所需的所有值,无法创建对象。
命名字段在可选时更好,可以按任何顺序设置,你想清楚哪个字段是什么。当类型相同且容易混淆时,命名字段也有助于避免混淆。
注意:
答案 1 :(得分:1)
对于Starter,您可以使用constructor
在实例化对象时设置属性的值,但很多情况下这对您来说会有问题,因为Object
可能具有不同的值,具体取决于他们被置于上下文中。
使用Constructor
并且实例化Object
(构造函数每个对象只有一次)如果需要更改属性的值,该怎么办?您可以创建新的Object
,但这会浪费资源。如果Dependency不是代码中的一个选项,那么只需要构造函数。
为了满足OOP
,Getter
和Setter
方法的4原则的要求,实现它的关键。
它也取决于你的设计模式,对于Immutable Object Creation
,你必须使用构造函数,因为你不能在创建后改变Object的状态。
Getter
和Setter
是Pojo Object被认为更强大的原因,当你必须编写100个具有大量逻辑的LOC时。但是使用构造函数,您必须根据需求创建不同参数的构造函数,以满足您的逻辑,从而导致对类的依赖性数量。
为了将来的目的,Constructor
应仅用于实例化Single responsibility principle
中的SOLID
对象。
答案 2 :(得分:0)
虽然构造函数可以处理作业,但是setter的功能是使相应的值可变(外部),而构造函数只有它是不可变的,除非它是公开的或在内部更改。
通常,不应该更改的值(如ID等)由构造函数设置并标记为final,而要在外部更改的值具有setter方法以根据需要更改值。 / p>