构造函数在Java中返回什么?

29 java constructor

在关于这个话题的帖子后,我发现自己有点困惑.所以我再次问这个问题:

"Java构造函数是否返回任何值?"

我的书说他们不能回报价值,但我的教授说他们可以而且他们总是这样做.

由于控件需要转移给某些有价值的人无效?

das*_*ght 34

这有点令人困惑:构造函数确实没有返回值; 它是运营商new.但是,构造函数总是与new*一起使用,因此它们看起来总是返回一个值.


*这是一个小小的简化:new如果你经历反射,你可以使用构造函数.但是,相同的机制将起作用.

  • @shivdhwajpndey我没有说`new`关键字返回一个值:我说'new`*运算符*.关键字和特殊字符是语法元素; 他们什么都不做.这是他们所代表的运营商.关键字`new`本身就像它们自己留下的"+"或"-"一样毫无意义.他们需要操作数.就像一元减去一个必须是数字的操作数一样,运算符`new`需要一个操作数,它必须是一个构造函数.运算符`new`负责分配内存,调用构造函数,向其传递所需的参数,并将值返回给您. (14认同)

Ósc*_*pez 8

构造函数返回它所属的类的新实例,即使它没有显式的return语句.


NPE*_*NPE 6

我认为这种混淆纯粹是符号的.声明构造函数时,您可以这样做:

public class Foo {
    public Foo() {}
}
Run Code Online (Sandbox Code Playgroud)

这里没有明确的返回值.

但是,在实例化对象时,语法如下:

Foo foo = new Foo();
Run Code Online (Sandbox Code Playgroud)

这通过分配内存并调用构造函数来创建新对象.在这里,结果显然是一个例子Foo.

调和明显冲突符号的一种方法是将构造函数视为返回正在构造的对象,但隐式地这样做.


Ash*_*786 5

构造函数是特殊方法。构造函数和方法的基本区别是

建设者

  • 与班级同名
  • 没有返回类型
  • 可以重载,但不能重载。

方法

  • 名称可能与Class相同,也可能不同。
  • 有退货类型
  • 可以重载和覆盖。

方法的语法:
AccessModifier ReturnType类(...)
EG: 公共静态void main(String [] args)

构造函数的语法:
AccessModifier 否ReturnType类(...)
EG: 公共静态main(String [] args)

请注意:

Java是一种强类型语言,因此每个函数都有其返回类型,构造函数始终返回该类的实例。