问几个比较容易的问题,希望大家回答,高分相送,决不食言

时间:2022-11-10 17:49:31
主要是和子类覆盖基类的方法有关的问题
1。子类方法覆盖基类的方法时,如果基类方法没有抛出任何异常,那么子类方法是不是可以抛出非检测异常?

2。子类方法能否覆盖基类的ststic方法?怎样隐藏它?

3。子类方法覆盖基类的方法时,如果基类方法的检测异常在方法内部用try catch处理了,那么在子类的方法中能否抛出该异常?

4。如果一个方法中抛出一个检测异常(throws),那么从另外一个方法中调用这个方法时,是不是也要申明抛出?或者在调用时用try  catch处理?

12 个解决方案

#1


1、抛出异常的子类方法,和不抛出异常的基类方法,不是等同的,你等于没覆盖;
2、要隐藏,用final static;
3、不能
4、对

#2


1. 不可以。基类抛出异常,子类可以不抛,但反过来不行。
2。 只有 static方法才可以覆盖 static方法。
3。 你说的两者好像没有什么必然联系吧。
4。 对

#3


to:wangwenyou(王文友) 
首先谢谢你的回答

对于第一条,我有异议
java好像只是通过方法名和参数来识别不同的方法,而和方法所抛出的异常无关吧?
如果不对,还望多指教

#4


to:wangwenyou(王文友) 
首先谢谢你的回答

对于第一条,我有异议
java好像只是通过方法名和参数来识别不同的方法,而和方法所抛出的异常无关吧?
如果不对,还望多指教

#5


应该有区别,因为我也曾试图在子类中抛出异常(接口未抛),结果编译器告诉我没实现那个方法。

#6


我抛的是非检测异常啊
做了个小程序,试了一下,结果可以public class B{
      
           
      public  void m(){
          System.out.println("1");
       }
}

class C extends B{
    public static void main(String[] args){
    C d=new C();
    d.m();
    }
           
    public void m() throws Error{
          System.out.println("2");
          super.m();
          
       }
}
结果为2

#7


那也许就是Error的特性了:)

#8


谁能说清楚这个问题?

#9


Error 和 Exception 应该不一样.

Error以及 RuntimeException 是属于非检测性的, 任何程序都有可能发生. Java 并不强制你要 catch 这些系统性的错误和异常.

#10


1。子类可以声明抛出“非检测异常”,对于需要检查的异常见 dylanwolf() 的回答。这是因为子类的实例应该可以用在任何可以用基类实例的地方。如果子类方法抛出基类方法中没有声明的需要检查的异常,这个条件就会被破坏。非检测异常不需要处理,所以不存在这个问题。

#11


up

#12


好,这个问题jimjxr(宝宝猫) 讲的很透彻,谢了,还有王文友

#1


1、抛出异常的子类方法,和不抛出异常的基类方法,不是等同的,你等于没覆盖;
2、要隐藏,用final static;
3、不能
4、对

#2


1. 不可以。基类抛出异常,子类可以不抛,但反过来不行。
2。 只有 static方法才可以覆盖 static方法。
3。 你说的两者好像没有什么必然联系吧。
4。 对

#3


to:wangwenyou(王文友) 
首先谢谢你的回答

对于第一条,我有异议
java好像只是通过方法名和参数来识别不同的方法,而和方法所抛出的异常无关吧?
如果不对,还望多指教

#4


to:wangwenyou(王文友) 
首先谢谢你的回答

对于第一条,我有异议
java好像只是通过方法名和参数来识别不同的方法,而和方法所抛出的异常无关吧?
如果不对,还望多指教

#5


应该有区别,因为我也曾试图在子类中抛出异常(接口未抛),结果编译器告诉我没实现那个方法。

#6


我抛的是非检测异常啊
做了个小程序,试了一下,结果可以public class B{
      
           
      public  void m(){
          System.out.println("1");
       }
}

class C extends B{
    public static void main(String[] args){
    C d=new C();
    d.m();
    }
           
    public void m() throws Error{
          System.out.println("2");
          super.m();
          
       }
}
结果为2

#7


那也许就是Error的特性了:)

#8


谁能说清楚这个问题?

#9


Error 和 Exception 应该不一样.

Error以及 RuntimeException 是属于非检测性的, 任何程序都有可能发生. Java 并不强制你要 catch 这些系统性的错误和异常.

#10


1。子类可以声明抛出“非检测异常”,对于需要检查的异常见 dylanwolf() 的回答。这是因为子类的实例应该可以用在任何可以用基类实例的地方。如果子类方法抛出基类方法中没有声明的需要检查的异常,这个条件就会被破坏。非检测异常不需要处理,所以不存在这个问题。

#11


up

#12


好,这个问题jimjxr(宝宝猫) 讲的很透彻,谢了,还有王文友