如果使用构造函数,则需要使用setter和getter。我对这些术语感到完全困惑,有人可以详细说明一下。
答案 0 :(得分:7)
如果我们使用构造函数,是否需要使用setter和getters
首先,没有构造函数就无法拥有一个类,如果不提供任何编译器,则将为您生成它们。如果您未定义自己的构造函数,则不应使用不相关的setter和getter。当您设计一个类时,您要设计它的接口,然后添加成员变量以实现该行为,并且这些成员是该类的内部表示,外界不应意识到它们-这就是数据封装的目的,这就是我们制造它们的原因私人或受保护的。当您先添加成员,然后盲目提供getter和/或setter时,这是错误的OOD方法。
答案 1 :(得分:1)
使用构造函数创建对象。使用吸气剂从已经存在的对象中获取信息。使用设置器来更改现有对象。
任何一个特定的班级可能都需要一个或多个这些东西,但并不是每个班级都需要全部。特别是不可变类在创建后便无法修改,因此不需要设置器。
答案 2 :(得分:1)
这两件事非常不同。
构造函数是每当创建对象时系统都会调用的函数。如果您自己未定义,则编译器将提供默认值。无论发生什么情况,对于您创建的每个对象,构造函数都会被精确调用一次。它的目的通常是为类的所有成员设置有效值。
相比之下,获取器和设置器只是常规函数,即旨在提供对类的单个成员(分别为读取和写入访问权限)的访问的方法。不需要提供一个,并且它们不会自动生成;相反,如果提供了一个,则可以根据需要随意调用它。
希望很明显,构造函数与set / getter有何不同。