A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王梁星 中级黑马   /  2012-10-17 19:01  /  1246 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  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应用到给定类型?
为什么这样?

评分

参与人数 1黑马币 +15 收起 理由
韩军博 + 15 神马都是浮云

查看全部评分

3 个回复

倒序浏览
没有具体返回值类型的方法就用void是指空返回值类型,只要有具体的返回值类型就不能再用void了
回复 使用道具 举报
"无法将类 Base中的构造器 Base应用到给定类型?"

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



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

此处不可能抛出异常,这两句代码,虚拟机没有抛出异常的可能性,而且你也没有手动抛出异常,所以你对异常的理解有点问题.

评分

参与人数 1技术分 +1 收起 理由
韩军博 + 1

查看全部评分

回复 使用道具 举报
构造器是不含任何返回值
void也是一种返回值类型 只是他什么也不返回
下面是相关的帖子你可以好好看看
http://bbs.itheima.com/thread-16870-1-1.html
http://topic.csdn.net/t/20050509/23/3993583.html
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马