为了账号安全,请及时绑定邮箱和手机立即绑定

没有返回值

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

正在回答

6 回答

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

1 回复 有任何疑惑可以回复我~
#1

鸟山明 提问者

加上void后出错
2016-04-14 回复 有任何疑惑可以回复我~
#2

鸟山明 提问者

加上void后出错,显示方法未定义,为什么会这样?
2016-04-15 回复 有任何疑惑可以回复我~
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("有参数");
    }
 }


0 回复 有任何疑惑可以回复我~
#1

simon_qin

构造方法无返回类型,void都不能有 构造:public test(){},public test(int a){} 1. 构造方法的特征 • 它具有与类相同的名称; • 它不含返回值; • 它不能在方法中用 return 语句返回一个值; • 当自定义了构造方法后,编译器将不再自动创建不带参数的构造方法 。 • 在构造方法里不含返回值的概念是不同于 “void” 的,在定义构造方法时加了 “void” ,结果这个方法就不再被自动调用了。
2016-04-15 回复 有任何疑惑可以回复我~
#2

simon_qin

构造方法和创建方法是有所不同的,你留意下吧
2016-04-15 回复 有任何疑惑可以回复我~
#3

鸟山明 提问者 回复 simon_qin

好的,很感谢
2016-04-15 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

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

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

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

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


0 回复 有任何疑惑可以回复我~
#1

鸟山明 提问者

对,那么这里既然没有return,为什么却没有void呢?
2016-04-15 回复 有任何疑惑可以回复我~
#2

simon_qin 回复 鸟山明 提问者

能发一下你写的代码过来看看吗?不太懂你想要问的知识点,或许看了代码能给你分析下
2016-04-15 回复 有任何疑惑可以回复我~
#3

simon_qin 回复 鸟山明 提问者

构造方法无返回类型,void都不能有 构造:public test(){},public test(int a){} 1. 构造方法的特征 • 它具有与类相同的名称; • 它不含返回值; • 它不能在方法中用 return 语句返回一个值; • 当自定义了构造方法后,编译器将不再自动创建不带参数的构造方法 。 • 在构造方法里不含返回值的概念是不同于 “void” 的,在定义构造方法时加了 “void” ,结果这个方法就不再被自动调用了。
2016-04-15 回复 有任何疑惑可以回复我~
#4

鸟山明 提问者 回复 simon_qin

好的,代码如下,多谢
2016-04-15 回复 有任何疑惑可以回复我~
查看1条回复

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

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

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

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       530554    人
  • 解答问题       6091    个

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

进入课程

没有返回值

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信