繁体   English   中英

构造函数与Java中的常规方法有何不同?

[英]How are Constructors different from normal methods in Java?

我在有关方面的Spring教程中阅读了以下内容。

与大多数其他OOP语言中的构造函数不同,Java构造函数与常规方法不同。

真的吗? 如果是,原因和方式是什么? 我了解构造函数与普通方法的区别和重要性。 但是,C ++中的差异是否与Java中的相同? 或者,在Java中是否还有其他调整?

我的观点集中在与其他OOP语言(例如C ++)的比较。

说“ A”是Java中的Constructor和Normal方法之间差异的解释。 B是任何其他OOP语言中的构造方法和Normal方法之间差异的解释。 我想知道A和B之间的区别吗?

构造函数将具有与类完全相同的名称,并且根本没有任何返回类型,甚至没有void。 构造函数对于为某些成员变量设置初始值非常有用。

构造函数和方法在签名的三个方面有所不同:修饰符,返回类型和名称。 与方法一样,构造函数可以具有任何访问修饰符:public,protected,private或不包含(通常称为package或friendly)。 与方法不同,构造函数只能使用访问修饰符。 因此,构造函数不能是抽象的,最终的,本地的,静态的或同步的。

返回类型也非常不同。 方法可以具有任何有效的返回类型,也可以没有任何返回类型,在这种情况下,返回类型为void。 构造函数没有返回类型,甚至没有void。

让我们考虑以下指令:

Foo a = new Foo();

第一部分new Foo(); 是将运算符( new )和操作数( Foo() )组合在一起的操作。 在幕后,此方法以Foo 的大小在堆中分配内存,最终通过调用我们称为构造函数的方法来填充内存,并返回对该新创建对象的引用。

第二部分Foo a =声明一个类型为Foo的变量,该变量存储了以上部分给出的引用。

现在我们已经引用了Foo的实例,我们可以调用该对象的一些方法。 例如:

a.makeNoise();

不能使用new运算符调用方法(语法上不正确),并且不在堆上分配一些内存,而是执行指令列表。

总之,构造函数与方法不同,因为它们不能在相同的情况下使用,并且不能在后台进行相同的工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM