构造函数是否返回一个对象?

6
class Test{
  public Test(){
    System.out.println("I am here");
    return;// not getting error
  }

  public static void main(String[] args){
    Test test = new Test();
  }
}

我是Java初学者。我的导师告诉我构造函数返回一个对象,并向我展示了上面的例子。这真的发生了吗?因为方法没有返回任何值,但return;却没有出现错误。


1
构造函数不会返回对象。new 关键字会使 JVM 创建对象,调用其构造函数,然后“返回”该对象。 - CollinD
1
[INFO] return 关键字简单地将流程返回到方法签名(基本上跳过 return 语句后的代码)。尝试在 return 后编写一些 print 语句。而这种 return 的签名是用于 void 方法中,而不是带有返回类型的方法 :P - bananas
明白了,但构造函数没有 return 类型,即使是 void,编译器也不会在此处报错,所以我感到困惑。 - Avinash Kumar
@I_Am_Innocent,“方法签名”?你在说什么? - user207421
@EJP抱歉我的交流技巧有限,实际上我想表达的是“代码的其余部分将不会执行”。 - bananas
5个回答

7

不,构造函数仅仅是初始化一个已经被创建的对象。它并不返回一个对象。你的导师是错的。

在构造函数内部,除非你提前返回,否则不需要编写return;语句。


2
不行。构造函数的作用是初始化对象的状态。 在下面的示例中,使用“new”关键字创建堆中的一个对象。您创建了一个对象,然后使用类型为“Test”的变量名“test”指向该对象。
 Test test = new Test();

2
不,这完全不正确。
在Java中,构造函数是一段类似于方法的代码块,当创建一个对象实例时会被调用。以下是构造函数和方法之间的主要区别:
  • 构造函数没有返回类型。

  • 构造函数的名称必须与类名相同。

  • 与方法不同,构造函数不被视为类的成员。

  • 当创建一个对象实例时,构造函数会自动调用。

示例:
class Bike1{  
    Bike1(){
        System.out.println("Bike is created");
    }  

    public static void main(String args[]){  
        Bike1 b=new Bike1();  
    }  
} 

2
这行代码
return;

并不意味着返回值,而只是结束构造函数的执行,并且由于它在最后一行,所以并不一定会使用return关键字。这种情况下才会使用return关键字在构造函数中。
class Test
{

  private int a;
  public Test(int a)
  {
    System.out.println("I am here");
    if(a>10)
    {
        System.out.println("I'm Executed but not the rest of code");
        return;
    }
    System.out.println("I'm the last line of constructor"); 
  }

  ...

}

constructor 中的 return 就像 void 方法中的 return


1

Java中的构造函数是一种特殊类型的方法,用于初始化对象。

Java构造函数在对象创建时调用。它构造值,即为对象提供数据,因此它被称为构造函数。

但它没有返回类型,我很抱歉你的导师在这方面是错误的,请与他重新讨论。

class Car{  
Car()
{
System.out.println("Car is created");
}  
    public static void main(String args[])
{  
    Car c=new Car();  
    } 
 } 

你好,我知道你是新来的,但在发布回答之前请检查格式。 - Kashif Faraz Shamsi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接