class A
{
public void fun(){}
};class B extends A
{
public void fun() throws RuntimeException{}
}; 
高人们来看看,上面这段程序编译会出错吗?

解决方案 »

  1.   

    OK,我自己摆平了哈~
    是隐式异常和显式异常的区别~
    朋友们,你们可以再拿这两个异常NoSuchMethodException和SQLException,在父类子类搭配来搭配去试试就明白了.
    class A
    {
    public void fun()throws NoSuchMethodException{}
    };class B extends A
    {
    public void fun()throws SQLException {}
    };运行时异常特殊哦~
      

  2.   

    继承父类的子类中能处理的异常只能是父类能处理的异常的子类---
    study
      

  3.   

    RuntimeException 不申明也可以抛出。也就是说RuntimeException 申不申明都一样。所以这样是可以的。
      

  4.   

    RuntimeException 不申明也可以抛出。也就是说RuntimeException 申不申明都一样。所以这样是可以的。
    ===========================================================================
    非RuntimeException不申明也可以抛出的,只不过RuntimeException不需要捕捉而非RuntimeException需要
      

  5.   

    OK,我自己摆平了哈~
    是隐式异常和显式异常的区别~
    =============================
    你根本没有明白;在Java中要求子类只能平等或者扩大父类的限制(不包括访问修饰符),不能缩小父类的限制
      

  6.   

    呵呵~~看来还是有很多人不明白,或者没认真看题或上机调试过.class A
    {
    public void fun(){}
    };class B extends A
    {
    public void fun() throws RuntimeException{}
    }; 这个例子编译是通过的.
    那些说什么父类子类的兄弟,你们的意思我当然明白.
    方法覆盖有两个原则,对吧.
    1.子类方法权限不能比父类弱
    2.子类方法抛出的异常不能比父类的多.就是因为原则2,我才会有这道题的疑问.这个例子,明显父类没异常,子类有异常.
    如果按原则2,它应该是通不过编译的,对吧答案我前面已经说了,大家认真看看贴就明白了.RuntimeException异常编译时不捕捉.
    运行时由JVM捕捉.
    jvm深入研究那个书上有说.大家自己去看吧.PS:发现一个比较严重的情况,看了CSDN上很多贴子,发现很多人好像都不认真看贴就回复.这好像是个不太好的习惯哦~~~目标:跟大家一起努力,一起进步
      

  7.   

    JAVA软件工程师1、  精通JAVA基础,喜欢研究JAVA中的深层次问题,经常为了攻克一个问题茶不思饭不想。掌握JAVA的常用命令。理解JAVA中的继承,封装,多态(最基本要求。最好是可以在实际应用中使用)。熟练使用JAVA的IO,多线程,了解socket编程(这个只需要基本的应用就可以了,不必非得大师级的)。
    2、  精通JSP,servlet, filter的使用及配置(必须精通,工作中不能在这上浪费时间)。
    3、  熟悉struts应用。深入了解MVC模式。
    4、  熟练Hibernate的使用。(熟练并不是指应用HibernateSynchronizer这样的工具,而是要会手工写的哦)。
    5、  熟练SQL,可以熟练的运用SQL操作DB(这个没什么可说的,注意看SQL,不是HQL)。
    6、  熟练使用tomcat配置、部署(这个你一定会吧)。
    7、  熟悉spring者优先。
    qq  283765999
    msn [email protected]
    地点: 北京中关村太平洋附近
      

  8.   

    PS:发现一个比较严重的情况,看了CSDN上很多贴子,发现很多人好像都不认真看贴就回复.这好像是个不太好的习惯哦~~~
    ===================
    我好像中招了
    但是需要指出的是throws RuntimeException根本没有意义 即使你在方法声明处不写
    当然有许多继承了RuntimeException 在方法中却throws,可以说是多此一举 或者是为了明确表明这个异常是哪个包甚至定位到这个包的哪种异常
      

  9.   

    如果不加exception specification的话,就说方法可以抛出任何异常。如果加上只能抛出声明的异常或其子类。
    所以quot:在Java中要求子类只能平等或者扩大父类的限制(不包括访问修饰符),不能缩小父类的限制.并没有错。