`

重写方法声明异常的问题

    博客分类:
  • java
阅读更多

重写方法声明异常的问题

========================================================================================

在讲这个问题之前,先说一下重载与重写.

  关于重载怎么区分就不说了,这里只想说明:不仅可以在同一个类中重载多个方法,而且可以在子类中
  继续重载.
  
  关于重写,只能是子类中重写父类中的方法.
  
  有的时候父类中某个方法声明抛出某个异常,那么我们在子类中重写这个方法时,如果要抛出异常,不能
  比父类中声明的异常大.(小于等于),或者不用抛出异常.

========================================================================================
  

测试代码 复制代码
  1. package test;   
  2. /**   
  3.  * 重写方法时要注意: 声明所抛异常的大小不能大于被重写方法所声明要抛异常的大小   
  4.  * @author fhd001   
  5.  */   
  6. public class OverWriterTest extends Tr{   
  7.   
  8.     public static void main(String[] args) {   
  9.   
  10.         OverWriterTest o = new OverWriterTest();   
  11.         o.aaa();   
  12.     }   
  13.        
  14.     /*   
  15.      * 这里aaa是一个重写方法,它所声明抛出的异常不能比父类中的大,   
  16.      * 或者这里不用抛异常也可以.   
  17.      */   
  18.     public void aaa()throws NullPointerException{   
  19.         super.aaa();   
  20.         System.out.println("OverWriterTest--->aaa");   
  21.     }   
  22. }   
  23.   
  24. class Tr{   
  25.        
  26.     public void aaa() throws NullPointerException{   
  27.            
  28.         System.out.println("Tr--->aaa");   
  29.     }   
  30. }  
package test;
/**
 * 重写方法时要注意: 声明所抛异常的大小不能大于被重写方法所声明要抛异常的大小
 * @author fhd001
 */
public class OverWriterTest extends Tr{

	public static void main(String[] args) {

		OverWriterTest o = new OverWriterTest();
		o.aaa();
	}
	
	/*
	 * 这里aaa是一个重写方法,它所声明抛出的异常不能比父类中的大,
	 * 或者这里不用抛异常也可以.
	 */
	public void aaa()throws NullPointerException{
		super.aaa();
		System.out.println("OverWriterTest--->aaa");
	}
}

class Tr{
	
	public void aaa() throws NullPointerException{
		
		System.out.println("Tr--->aaa");
	}
}

 

结果代码 复制代码
  1. Tr--->aaa   
  2. OverWriterTest--->aaa  
Tr--->aaa
OverWriterTest--->aaa

 转http://fhd001.iteye.com/blog/411891

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    C#中方法的重写

    本文为您介绍C#中方法的重写的文章,具体方法请看介绍  问题一:什么是重写?  “重写”父类方法是修改它的实现方式或者说在...要重写父类的方法,前提是父类中该要被重写的方法必须声明为virtual或者是abstract

    静态(static)方法的继承和重写

    如果一个方法不需要访问类的实例变量(非静态字段)或者调用其他非静态方法,那么这个方法可以考虑声明为静态。这样做可以节省内存,因为不需要为每个实例创建方法副本。但是,如果一个方法需要访问实例变量或依赖于...

    Java常见笔试、面试题目深度剖析,方法重写详解、静态代码块与构造方法执行顺序问题

    此外,子类方法的访问修饰符不能比父类更严格,且不能声明为private。`@Override`注解用于明确表示该方法是重写父类的方法,这有助于编译器检查方法签名是否匹配,提高代码的可读性和安全性。 其次,我们要了解**...

    Java面向对象(进阶)- 四种权限测试与方法的重写(override-overwrite)

    - 重写的方法不能抛出更大的异常,除非捕获并重新抛出。 4. **面试题**:面试中可能会遇到关于重写的问题,如询问重写与重载的区别,或者设计一个场景来考察对重写的理解。 四、方法的重写--练习题 为了巩固理解...

    c++ 重载、覆盖、重写

    3. **虚函数:** 重写的函数必须在基类中声明为虚函数,而重载的函数则无需声明为虚函数。 #### 六、隐藏与重载、重写的区别 1. **范围:** 隐藏发生在不同的类之间,而重载发生在同一个类中。 2. **参数列表:** ...

    浅谈java中静态方法的重写问题详解

    这篇文章将深入探讨这个问题,帮助开发者理解静态方法调用的机制以及如何正确实现预期的行为。 首先,我们需要明确一个基本概念:在面向对象编程中,重写通常指的是子类能够覆盖父类的非静态(instance)方法,以...

    Java重写重载线程

    ### Java中的方法重载与重写以及线程概念详解 #### 一、方法重载(Overloading) 在Java中,**方法重载**是指在同一个类中定义多个具有相同名称但参数列表不同的方法。这里提到的“参数列表不同”不仅包括参数的...

    java基础第七章内部类与异常类.doc

    匿名类是一种特殊的内部类,它可以继承父类的方法也可以重写父类的方法。匿名类的特点是:它可以访问外嵌类中的成员变量和方法,但它的类体中不能声明静态成员变量和静态方法。匿名类一定是内部类,它可以直接使用...

    彻底 HtmlParser 重写的两个类文件,直接放在目录下面或者大宝到jar里面可以用

    3. **异常处理**:在代码中添加适当的异常处理逻辑,以防万一编码识别失败或转换过程中出现问题。 4. **文档更新**:更新项目的文档,记录下这个改变,以便其他团队成员或未来维护者了解这一改进。 通过这些调整,...

    浅谈重写window对象的方法

    此外,如果你的代码运行在严格模式('use strict')下,直接赋值给未声明的变量(如第二种方法中的`alert`)会抛出错误,因此必须确保全局变量已经声明。 为了尽可能减少潜在的问题,你可以考虑以下几点: 1. **...

    Java中关于子类覆盖父类的抛出异常问题

    这个问题的核心是子类在重写父类方法时抛出异常的规则。通常,我们说子类覆盖父类方法时,抛出的异常不能比父类更"宽泛",这里的"宽泛"指的是异常类型的继承关系。 首先,让我们澄清一下Java中的异常处理概念。Java...

    Java异常面试题 Java异常面试题

    运行时异常是不需要在方法签名中声明的,如`NullPointerException`和`ArrayIndexOutOfBoundsException`,而受检异常如`IOException`和`SQLException`则必须在方法签名中声明或在方法体内进行捕获。 Java异常处理的...

    上转型对象体现多态

    - **多态性**:上转型对象可以调用父类中声明的方法,也可以调用子类重写的同名方法。 - **向下转型**:如果需要访问子类特有的方法或属性,则需要进行向下转型。但是需要注意类型检查,防止运行时出现`...

    iOS 异常自定义捕捉handle工具类下载

    在这个类中,可能会声明一个初始化方法,用于设置异常处理器,以及一个或多个方法来捕获和处理异常。例如,可能会有一个`+ (void)installExceptionHandler`这样的静态方法,用于注册异常处理程序。此外,还可能有一...

    C#中CLR虚方法的多态调用

    - **虚方法**:在基类中声明为`virtual`的方法,可以在派生类中通过`override`进行重写,从而实现在不同类型的对象上调用同一名称的方法时执行不同的行为。 - **非虚方法**:在类中声明但未标记为`virtual`的方法,...

    java复习题

    Java复习题知识点总结 一、Java语言基础 * Java语言使用的字符码集是Unicode(问题1) ...* 如果某个方法中会产生异常,而在当前方法中不想处理该异常,则可以在方法声明时,采用throws关键字来声明该异常(问题12)

    PHP程序设计-3期(KC016) 3.8.2 类的继承常见问题.docx

    遇到上述问题时,应根据需求选择合适的解决方案,例如使用接口、组合、抽象类和抽象方法,以及合理设置访问权限和利用final关键字来控制继承和方法重写。同时,深入理解面向对象设计原则,如单一职责原则(SRP)、开...

    10道Java常见异常面试题含答案(很全)

    `throws`用在方法声明上,表示该方法可能抛出的异常类型,调用者必须处理这些异常或在自己的方法上同样声明。 5. **final、finally、finalize的区别**: - `final`修饰类、变量和方法,阻止继承、重写或改变变量值...

    android_异常处理_对异常进行全局捕捉

    首先,要实现全局异常捕捉,需要定义一个自定义的UncaughtExceptionHandler类,如CatchHandler,该类需要实现UncaughtExceptionHandler接口,并重写其uncaughtException方法。在这个方法中,可以定义当主线程(main)...

    [图文]JAVA程序设计合集之7异常-.doc

    关于“重写方法需要抛出与原方法所抛出异常类型一致异常或不抛出异常”的规则,这是Java的异常处理原则之一,称为“异常兼容性”。根据Java的继承机制,子类方法可以覆盖父类方法,但其异常处理必须“至少一样好”,...

Global site tag (gtag.js) - Google Analytics