用Java中的默认构造函数复制构造函数

Vivek Vermani

我需要在类中有一个复制构造函数,因为我需要创建重复的对象。我相信,如果我将创建副本构造函数,那么我也将必须指定非参数化的构造函数,因为Java将不再提供默认的构造函数。

我不想触摸默认构造函数,因为这是我在各处代码中使用的构造函数。是否有一种解决方法,可以在没有定义基本构造函数的情况下使用复制构造函数或类似的东西。

乔恩·斯基特

不,如果要同时拥有无参数构造函数具有参数的构造函数,则需要同时声明它们。声明无参数构造函数非常容易:

public YourClassName() {
}

super();是隐含的。

尽管它不一定具有与默认构造函数相同的访问权限,但其行为与默认构造函数的行为完全相同。(当然,您可以根据需要将其更改public为。)在JLS的8.8.9节中

如果一个类不包含构造函数声明,则将隐式声明一个没有形式参数且没有throws子句的默认构造函数。

如果要声明的类是原始类Object,则默认构造函数的主体为空。否则,默认构造函数将简单地调用不带参数的超类构造函数。

如果隐式声明了默认构造函数,但超类没有可访问的构造函数(第6.6节),该构造函数不带参数且不包含throws子句,则这是编译时错误。

在类类型中,如果将类声明为public,则默认构造函数将隐式赋予访问修饰符public(第6.6节);如果该类被声明为受保护的,则默认构造函数被隐式赋予访问修饰符保护(第6.6节);如果该类被声明为私有,则默认构造函数被隐式赋予访问修饰符私有(第6.6节);否则,默认构造函数具有无访问修饰符暗含的默认访问权限。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Java是否具有默认的复制构造函数(如C ++)?

来自分类Dev

强制复制构造函数

来自分类Dev

C ++中的构造函数和复制构造函数行为

来自分类Dev

用Java复制构造函数

来自分类Dev

它在C ++标准中的何处声明删除复制构造函数时未生成默认构造函数?

来自分类Dev

Java中的无参数构造函数和默认构造函数之间的区别

来自分类Dev

复制构造函数

来自分类Dev

C ++中的复制构造函数

来自分类Dev

没有默认构造函数的奇怪的C ++复制构造函数

来自分类Dev

用Java调用构造函数

来自分类Dev

C ++调用默认构造函数而不是复制构造函数

来自分类Dev

用Byte Buddy拦截默认构造函数

来自分类Dev

复制构造函数

来自分类Dev

Java使用默认构造函数

来自分类Dev

复制或引用构造函数?

来自分类Dev

gcc 4.8.2在此默认默认构造函数中调用复制构造函数时是否正确?

来自分类Dev

用默认构造函数生成的C ++移动构造函数

来自分类Dev

C ++复制构造函数和默认构造函数

来自分类Dev

意外的复制构造函数

来自分类Dev

复制构造函数的参数

来自分类Dev

在复制构造函数定义中调用成员构造函数

来自分类Dev

关于默认和复制构造函数

来自分类Dev

用基类的复制构造函数替换默认的复制构造函数(C ++)

来自分类Dev

用C ++中的链表实现堆栈,复制构造函数

来自分类Dev

Java中的默认构造函数?

来自分类Dev

C ++中的复制构造函数

来自分类Dev

gcc 4.8.2在此默认默认构造函数中调用复制构造函数时是否正确?

来自分类Dev

java默认构造函数

来自分类Dev

为什么 Java 不提供默认的复制构造函数?