 
		鸟山明
2016-04-14 16:15
既然构造方法没有返回值,那么定义方法时为什么不加 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的时候自动调用。
Java入门第二季
531292 学习 · 6327 问题
相似问题