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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 马雨铎 黑马帝   /  2011-7-29 12:30  /  1724 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

代码1:
import java.io.*;
class Fu
{
    public void myVoid() throws IOException
    {
         System.out.println("父类");
    }
}
public class LianXil extends Fu
{
    public void myVoid() throws Exception
    {
         System.out.println("子类");
    }
    public static void main(String args[])
    {
    }
}
代码2:
import java.io.*;
class Fu
{
    public void myVoid() throws IOException
    {
         System.out.println("父类");
    }
}
public class LianXil extends Fu
{
    public void myVoid(String s) throws Exception
    {
         System.out.println("子类");
    }
    public static void main(String args[])
    {
    }
}
代码1运行的时候出错,说是子类重写了父类的myVoid方法,父类抛出异常IOException而子类抛出异常Exception,是 违反重写规则。所以出错。
但是  代码2  我觉得跟代码1 应该是一样的啊,为什么代码2能正常运行?

评分

参与人数 1技术分 +1 收起 理由
老罗 + 1 吃饭了。

查看全部评分

1 个回复

倒序浏览
黑马网友  发表于 2011-7-29 12:54:20
沙发
类抛出异常不能比父类类抛出异常小,所以代码1错了。
代码2跟代码不一样,楼主看错了,在代码2 中的myVoid(String s)方法有参数,并不是重写Fu类的myVoid()方法,所以没有报错,要重写最好的加上注解@Override,加上之后就你会看见错了

评分

参与人数 1技术分 +2 收起 理由
老罗 + 2 不错。

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马