问答详情
源自:8-6 Java 中的构造方法

没有返回值

既然构造方法没有返回值,那么定义方法时为什么不加 void?还是这里所说的返回值和 return不同?

提问者:鸟山明 2016-04-14 16:15

个回答

  • 慕粉3177888
    2016-04-14 16:28:48
    已采纳

    这就是规定,如果你现在自己做一个新语言的编译器,也可以规定构造函数必须加上void,或者一个特殊的返回值。
      那么为什么构造函数没有返回值呢,主要是为了区分构造函数和其它方法。其实,你可以尝试在你的构造函数前加上void,你会发现编译可以通过,但是编译器把它认为是方法,而不是构造函数,当然也无法在new的时候自动调用。

  • 鸟山明
    2016-04-15 15:34:01

    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("有参数");
        }
     }


  • simon_qin
    2016-04-15 13:03:37

    同学有兴趣的话可以百度一下构造方法和实例化对象之间的关系,这样可以更容易的区分一般的创建方法和构造方法的不同之处

  • simon_qin
    2016-04-14 23:13:48

    public void xxx(){方法代码;(无return)},

    public int xxx(){方法代码;return xxx(int类型变量);}

    这里的 void 和 int 都是用来区分这个方法有没有返回值

    public void int xxx(){方法代码;}这种写法是错误的,编译器是不能识别的


  • simon_qin
    2016-04-14 22:59:17

    void是定义没有返回值的方法;

    如果你想要这个方法有返回值的话就不能用void定义,要用与返回值相同的类型来定义这个方法

    比如你想返回一个int类型的值的方法就用int来定义这个方法

  • 慕粉3177888
    2016-04-14 16:29:13

    这就是规定,如果你现在自己做一个新语言的编译器,也可以规定构造函数必须加上void,或者一个特殊的返回值。
      那么为什么构造函数没有返回值呢,主要是为了区分构造函数和其它方法。其实,你可以尝试在你的构造函数前加上void,你会发现编译可以通过,但是编译器把它认为是方法,而不是构造函数,当然也无法在new的时候自动调用。