1。子类方法覆盖基类的方法时,如果基类方法没有抛出任何异常,那么子类方法是不是可以抛出非检测异常?
2。子类方法能否覆盖基类的ststic方法?怎样隐藏它?
3。子类方法覆盖基类的方法时,如果基类方法的检测异常在方法内部用try catch处理了,那么在子类的方法中能否抛出该异常?
4。如果一个方法中抛出一个检测异常(throws),那么从另外一个方法中调用这个方法时,是不是也要申明抛出?或者在调用时用try catch处理?
12 个解决方案
#1
1、抛出异常的子类方法,和不抛出异常的基类方法,不是等同的,你等于没覆盖;
2、要隐藏,用final static;
3、不能
4、对
2、要隐藏,用final static;
3、不能
4、对
#2
1. 不可以。基类抛出异常,子类可以不抛,但反过来不行。
2。 只有 static方法才可以覆盖 static方法。
3。 你说的两者好像没有什么必然联系吧。
4。 对
2。 只有 static方法才可以覆盖 static方法。
3。 你说的两者好像没有什么必然联系吧。
4。 对
#3
to:wangwenyou(王文友)
首先谢谢你的回答
对于第一条,我有异议
java好像只是通过方法名和参数来识别不同的方法,而和方法所抛出的异常无关吧?
如果不对,还望多指教
首先谢谢你的回答
对于第一条,我有异议
java好像只是通过方法名和参数来识别不同的方法,而和方法所抛出的异常无关吧?
如果不对,还望多指教
#4
to:wangwenyou(王文友)
首先谢谢你的回答
对于第一条,我有异议
java好像只是通过方法名和参数来识别不同的方法,而和方法所抛出的异常无关吧?
如果不对,还望多指教
首先谢谢你的回答
对于第一条,我有异议
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
做了个小程序,试了一下,结果可以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 这些系统性的错误和异常.
Error以及 RuntimeException 是属于非检测性的, 任何程序都有可能发生. Java 并不强制你要 catch 这些系统性的错误和异常.
#10
1。子类可以声明抛出“非检测异常”,对于需要检查的异常见 dylanwolf() 的回答。这是因为子类的实例应该可以用在任何可以用基类实例的地方。如果子类方法抛出基类方法中没有声明的需要检查的异常,这个条件就会被破坏。非检测异常不需要处理,所以不存在这个问题。
#11
up
#12
好,这个问题jimjxr(宝宝猫) 讲的很透彻,谢了,还有王文友
#1
1、抛出异常的子类方法,和不抛出异常的基类方法,不是等同的,你等于没覆盖;
2、要隐藏,用final static;
3、不能
4、对
2、要隐藏,用final static;
3、不能
4、对
#2
1. 不可以。基类抛出异常,子类可以不抛,但反过来不行。
2。 只有 static方法才可以覆盖 static方法。
3。 你说的两者好像没有什么必然联系吧。
4。 对
2。 只有 static方法才可以覆盖 static方法。
3。 你说的两者好像没有什么必然联系吧。
4。 对
#3
to:wangwenyou(王文友)
首先谢谢你的回答
对于第一条,我有异议
java好像只是通过方法名和参数来识别不同的方法,而和方法所抛出的异常无关吧?
如果不对,还望多指教
首先谢谢你的回答
对于第一条,我有异议
java好像只是通过方法名和参数来识别不同的方法,而和方法所抛出的异常无关吧?
如果不对,还望多指教
#4
to:wangwenyou(王文友)
首先谢谢你的回答
对于第一条,我有异议
java好像只是通过方法名和参数来识别不同的方法,而和方法所抛出的异常无关吧?
如果不对,还望多指教
首先谢谢你的回答
对于第一条,我有异议
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
做了个小程序,试了一下,结果可以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 这些系统性的错误和异常.
Error以及 RuntimeException 是属于非检测性的, 任何程序都有可能发生. Java 并不强制你要 catch 这些系统性的错误和异常.
#10
1。子类可以声明抛出“非检测异常”,对于需要检查的异常见 dylanwolf() 的回答。这是因为子类的实例应该可以用在任何可以用基类实例的地方。如果子类方法抛出基类方法中没有声明的需要检查的异常,这个条件就会被破坏。非检测异常不需要处理,所以不存在这个问题。
#11
up
#12
好,这个问题jimjxr(宝宝猫) 讲的很透彻,谢了,还有王文友