当我们设置值的setter函数时,为什么我们需要参数构造函数?有必要使用吗?如果我们想使用构造函数而不是setter是不是很好,之后我们可以使用getter函数访问我们的数据?
答案 0 :(得分:1)
构造函数的工作是以这样一种方式构造对象,使其处于可用状态。如果这需要ctor的参数,它应该得到它们,以便在构造函数完成时可以完全形成对象。 构造一个处于部分可用状态的对象,然后依赖于用户在允许使用该对象之前记住调用特定的setter是非常容易出错的。 Setter适用于在创建对象后更改内容,但是为了构造可用对象,调用它们不应该是必需的。
答案 1 :(得分:1)
如果在创建时没有构造可用对象,例如使用参数化构造函数,如果您/用户忘记使用setter实际为对象的参数赋予任何实际值,则可能会遇到问题。
可能您只是返回一个虚假/零值,这会产生意外结果,或者如果您尝试访问一些您无权访问的内存,可能会导致程序崩溃。
如果我误解了你的问题,你只是想说明为什么这样做:
django-activity-stream v0.6.2
而不是:
MyClass(int a, int b) {
myPrivateIntA = a;
myPrivateIntB = b;
}
如果您在设置值之前需要进行某种验证,我想您可以使用后者。