黑马程序员技术交流社区

标题: 关于void返回类型 [打印本页]

作者: 王梁星    时间: 2012-10-17 19:01
标题: 关于void返回类型
  1. //TestDuotaiEqual.java

  2. class Base{
  3.   private int num;
  4.   public Base(int num){//?本句加上void后报错:
  5.                        //22/21:错误: 无法将类 Base中的构造器 Base应用到给定类型?
  6.     this.num=num;
  7.   }
  8.   /**
  9.    * 复写父类已有的方法:
  10.    */  
  11.   public boolean equals(Object obj){//=>Object obj=new Base();
  12.     if(!(obj instanceof Base))
  13.         return false;                  //此处按说应抛出类型不同的错误
  14.     Base bs=(Base)obj;            //把父类作向下强制转换
  15.     return this.num==bs.num;
  16.   }
  17. }

  18. public class TestDuotaiEqual{
  19.   public static void main(String[] args){
  20.     Base b=new Base(6);
  21.     Base b1=new Base(9);
  22.     System.out.println(b.equals(b1));
  23.   }
  24. }
复制代码
见这句:
public Base(int num){//?本句加上void后报错:
                       //22/21:错误: 无法将类 Base中的构造器 Base应用到给定类型?
为什么这样?
作者: 王中利    时间: 2012-10-17 19:07
没有具体返回值类型的方法就用void是指空返回值类型,只要有具体的返回值类型就不能再用void了
作者: AngieFans85    时间: 2012-10-17 19:17
"无法将类 Base中的构造器 Base应用到给定类型?"

构造方法有固定的格式:
1 构造方法名必须与类名完全一致.
2 构造方法不可以有任何返回值,连void都不可以.



"if(!(obj instanceof Base))
        return false;                  //此处按说应抛出类型不同的错误"

此处不可能抛出异常,这两句代码,虚拟机没有抛出异常的可能性,而且你也没有手动抛出异常,所以你对异常的理解有点问题.
作者: 曾浩    时间: 2012-10-17 19:19
构造器是不含任何返回值
void也是一种返回值类型 只是他什么也不返回
下面是相关的帖子你可以好好看看
http://bbs.itheima.com/thread-16870-1-1.html
http://topic.csdn.net/t/20050509/23/3993583.html




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2