使用构造函数而不是方法初始化的原因是什么。
代码1:
class A {
int x, y;
public A() {
x = 10;
y = 4;
}
}
代码2:
class A {
int x, y;
public fun() {
x = 10;
y = 4;
}
}
从上面看,Code 1和Code 2之间有什么区别。 如果有人知道答案,请清除我的怀疑。?
答案 0 :(得分:3)
保证在创建对象时会调用构造函数,但是在方法的情况下,它是您控制何时调用。如果在方法而不是构造函数中初始化值,则在错误的时间调用方法可能会产生副作用。
因此,最好在构造函数中初始化值而不是方法,这是构造函数的目的。
答案 1 :(得分:2)
创建实例时会发生第一次分配。当您执行fun()
方法时,会发生第二次分配。
顺便说一句,你可以在构造函数中调用fun()
方法。
答案 2 :(得分:1)
构造函数确保正确实例化对象。无法保证调用者将调用该方法来手动实例化对象。
答案 3 :(得分:1)
与方法
不同,调用构造函数来创建类的实例并且不依赖于调用答案 4 :(得分:0)
使用代码1时,A a = new A();
将初始化x和y。
使用代码2时,您需要A a = new A();
和a.fun();
来初始化x和y。
如果您想在以后的某个时间使用此方法进行其他操作,则应将变量初始化放在方法中。
btw fun不是方法的适当名称。
答案 5 :(得分:0)
创建对象时隐式调用构造函数。在第二种情况下,该方法是一个实例级方法..您将必须创建一个类型为A的对象,然后“更改”x和y的值... defualt构造函数将默认值(0)分配给您的int变量...
答案 6 :(得分:0)
构造函数用作初始化程序,因为它提供了将对象初始化为内存的功能,或者在此时创建对象时构造函数将首先调用。如果不单独初始化任何值,并且想在结果中使用某个变量,则可以使用构造函数作为初始化程序。 为什么构造函数在编码中使用? Bcz它具有在创建Object之前初始化某些东西的性质。
我认为你明白我的观点。快乐的学习。 :)
由于
答案 7 :(得分:0)
从技术上讲,您可以隐藏构造函数并使用 工厂方法 模式:
class A {
int x, y;
// Hidden constructor
protected A() {
x = 10;
y = 4;
}
// Factory method to create A class instances
public static A Create() {
...
A result = new A();
...
return result;
}
}
在您的示例中,工厂方法是一个过冲,但它可能会有所帮助 实施单身人士,策略模式等时。