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

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

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

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

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

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


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

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

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

 public class Foo { public Foo() {} } 

这里没有明确的返回值。

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

 Foo foo = new Foo(); 

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

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

构造函数是特殊方法。 那么构造函数和方法的基本区别就在于此

构造函数

  • 与Class的名称相同
  • 没有返回类型
  • 可以重载但不会被覆盖。

方法

  • 可能与Class的名称相同或不同。
  • 有返回类型
  • 可以重载和重写。

方法语法:
AccessModifier ReturnType类(…)
EG: public static void main(String [] args)

构造函数的语法:
AccessModifier 没有ReturnType类(…)
EG: public static main(String [] args)

请注意:

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

我同意上述两种解释,并希望添加一些陈述以使其更加明确:

问题:什么是构造函数:答案:它的名称与Class相同。

问题:构造函数是否返回任何内容? 答:不,甚至没有VOID。

问题:如何调用构造函数? 或者如何调用构造函数? 答案:通过使用NEW关键字创建对象。

问题:如何创建对象? 答:创建对象的一种方法是使用NEW运算符,它返回一个对象实例。

根据定义,不可能从构造函数返回值。构造函数不支持任何返回类型

所以,我担心构造函数返回引用id到该类的引用变量。 举个例子:

 class demo { demo{} } class demo1 { public static void main(String as[]) { demo d = new demo(); System.out.println(d); } } 

输出:demo @ 7d4991ad它是类demo的对象’d’的引用id,由构造函数返回。 如果你不定义你的构造函数,那么jvm将从默认构造函数中获取此id。

你可以通过这一行交叉检查它:System.out.println(new demo()); 输出:demo @ 1b6d3586。 因为每个对象在内存中都有独立的堆区域,所以每个对象的引用ID也会有所不同。

想象一下你被告知画一只鹰的情况。

第一种情景:你不会被告知它应该是什么样子。 你所知道的只是制作一个鹰的简单草图

第二种情景:你被告知确切使用什么颜色以及描绘Eagle的姿势

现在,第一个场景准确描述了默认构造函数的作用,第二个场景是当您获得有关应该如何创建对象的信息时。 但除非你拿铅笔和纸并开始草绘,否则你将不会被退回任何东西。

因此,当您使用new关键字调用构造函数时,您将获得一个对象。 虽然它没有明确地返回一些内容,但它创建或构造了一些可以用作类的实例的东西。

是的,它是当前的类实例。 (我们不能使用返回类型,但它返回一个值)。

构造函数在更低级别返回类的详细结构(比如数据和方法将使用多少内存空间)+执行构造函数中编写的代码。 而new运算符采用,返回构造函数,作为其操作数,并在运行时分配内存并将其处理程序返回给类变量。

隐式构造函数返回类类型……..