构造函数不能指定返回值 是怎么回事

1130:构造函数不能指定返回值 是什么意思啊 我是和视频一步一步做的 视频的就可以输出图片 我的为什么不能

构造函数没有返回类型,所以不能返回。
1.构造函数的功能主要用于在类的对象创建时定义初始化的状态。它没有返回值,也不能用void来修饰。这就保证了它不仅什么也不用自动返回,而且根本不能有任何选择。而其他方法都有返回值,即使是void返回值。尽管方法体本身不会自动返回什么,但仍然可以让它返回一些东西,而这些东西可能是不安全的;
2.构造函数的命名必须和类名完全相同。在java中普通函数可以和构造函数同名,但是必须带有返回值;
3.构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用;而一般的方法是在程序执行到它的时候被调用的;
4.当定义一个类的时候,通常情况下都会显示该类的构造函数,并在函数中指定初始化的工作也可省略,不过Java编译器会提供一个默认的构造函数.此默认构造函数是不带参数的。而一般的方法不存在这一特点;
5.当一个类只定义了私有的构造函数,将无法通过new关键字来创建其对象,当一个类没有定义任何构造函数,C#编译器会为其自动生成一个默认的无参的构造函数。
6.构造函数有回滚的效果,构造函数抛出异常时,构造的是一个不完整对象,会回滚,将此不完整对象的成员释放(c++)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-07
构造函数返回的就是这个类的对象啊,这是不能改变的,默认的。所以构造函数不能指定返回值。
class MyClass
{
public MyClass()
{
   //构造方法(构造函数)
}
}
这是C#代码,执行MyClass返回的就是MyClass类的对象,MyClass abc = new MyClass();
C++也类似。追问

package{
import flash.display.Sprite;
public class main extends Sprite{
private var a:Sprite=new Sprite();
public function main():viod{
a.graphics.beginFill(003366);
a.graphics.drawRect(0,0,100,50);
a.graphics.endFill();
this.addchild(a);
}
}
} 帮我看看那里错了

追答

viod应该是void才对。

追问

文档里我没有打错
还有别的不对的地方吗

本回答被网友采纳
第2个回答  2012-11-07
构造函数是系统自动调用的 创建一个对象调用一次追问

package{
import flash.display.Sprite;
public class main extends Sprite{
private var a:Sprite=new Sprite();
public function main():viod{
a.graphics.beginFill(003366);
a.graphics.drawRect(0,0,100,50);
a.graphics.endFill();
this.addchild(a);
}
}
} 帮我看看 那里错了吗

第3个回答  2012-11-07
构造函数不能有返回值,可以被重写追问

package{
import flash.display.Sprite;
public class main extends Sprite{
private var a:Sprite=new Sprite();
public function main():void{
a.graphics.beginFill(003366);
a.graphics.drawRect(0,0,100,50);
a.graphics.endFill();
this.addchild(a);
}
}
} 帮我看看那里错了

相似回答