Java中是否有任何虚拟构造函数?

时间:2011-04-01 05:12:21

标签: java constructor

是否有任何术语在Java中调用Virtual Constructor?那么我们需要在哪里使用它?

5 个答案:

答案 0 :(得分:5)

虚拟构造函数不是Java语言的一部分,但该术语可能适用于某些设计模式

例如,在支持它的对象上调用object.clone()将产生一个新对象(如果你有一个复制构造函数,很像new ClassName(object)),因此类似于构造函数,但它是多态的。在“Effective Java”中,Joshua Bloch提倡使用静态工厂方法作为在某些情况下实现多态对象创建的另一种方法。

要在C ++上下文中使用该术语,请查看:http://www.parashift.com/c++-faq-lite/virtual-functions.html#faq-20.8

答案 1 :(得分:3)

我不确定“虚拟构造函数”是什么意思。构造函数在类层次结构中递归调用。每个构造函数都必须首先调用它的超类构造函数。 (如果是no-arg构造函数,则可以省略调用,在这种情况下,编译器会自动插入它。)

另外,Java没有虚拟方法。或者,更确切地说,每个实例方法都是虚拟的(在C ++意义上)。

答案 2 :(得分:0)

虚拟构造函数是什么意思?如果它类似于C ++中的虚函数,则java中没有虚构造函数。

答案 3 :(得分:0)

不是我知道了。 “Default Constructor ”是的。 Delphi有虚拟构造函数,大多数其他语言没有。有关相关内容,请参阅工厂模式。

答案 4 :(得分:0)

取决于虚拟构造函数的定义。如果使用虚拟构造函数,则是指作为某些工厂模式的一部分调用私有构造函数的静态方法,那么可以使用虚拟构造函数。我发现它们有时在构造后必须在self上调用方法时非常有用。您所要做的只是将构造函数设置为private,并在类中包含一个静态方法,该方法创建类对象实例并返回它。当需要在用户使用对象之前调用该对象上的方法时,这很有用。由于由于对象没有完全构造而在构造器中引用self是一个非常糟糕的主意,因此可以在实例化之后且用户可以访问它之前使用虚拟构造器来调用方法。