既然构造方法没有返回值,那么定义方法时为什么不加 void?还是这里所说的返回值和 return不同?
这就是规定,如果你现在自己做一个新语言的编译器,也可以规定构造函数必须加上void,或者一个特殊的返回值。
那么为什么构造函数没有返回值呢,主要是为了区分构造函数和其它方法。其实,你可以尝试在你的构造函数前加上void,你会发现编译可以通过,但是编译器把它认为是方法,而不是构造函数,当然也无法在new的时候自动调用。
public class Telephone { float cpu; /** * @param args */ public static void main(String[] args) { Telephone phone=new Telephone(); Telephone phone2=new Telephone(6.0f); } public void Telephone(){ System.out.println("无参数"); } public void Telephone(float newCpu){ if(newCpu>4){ System.out.println("输入有误"); cpu=2.0f; }else{ cpu=newCpu; } System.out.println("有参数"); } }
同学有兴趣的话可以百度一下构造方法和实例化对象之间的关系,这样可以更容易的区分一般的创建方法和构造方法的不同之处
public void xxx(){方法代码;(无return)},
public int xxx(){方法代码;return xxx(int类型变量);}
这里的 void 和 int 都是用来区分这个方法有没有返回值
public void int xxx(){方法代码;}这种写法是错误的,编译器是不能识别的
void是定义没有返回值的方法;
如果你想要这个方法有返回值的话就不能用void定义,要用与返回值相同的类型来定义这个方法
比如你想返回一个int类型的值的方法就用int来定义这个方法
这就是规定,如果你现在自己做一个新语言的编译器,也可以规定构造函数必须加上void,或者一个特殊的返回值。
那么为什么构造函数没有返回值呢,主要是为了区分构造函数和其它方法。其实,你可以尝试在你的构造函数前加上void,你会发现编译可以通过,但是编译器把它认为是方法,而不是构造函数,当然也无法在new的时候自动调用。