没有返回值

来源:8-6 Java 中的构造方法

鸟山明

2016-04-14 16:15

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

写回答 关注

6回答

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

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

    鸟山明

    加上void后出错,显示方法未定义,为什么会这样?

    2016-04-15 09:01:00

    共 2 条回复 >

  • 鸟山明
    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_...

    好的,很感谢

    2016-04-15 15:55:13

    共 3 条回复 >

  • 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_...

    好的,代码如下,多谢

    2016-04-15 15:33:17

    共 4 条回复 >

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

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

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

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

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

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

Java入门第二季 升级版

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

530649 学习 · 6091 问题

查看课程

相似问题