`
L.G.Alexander
  • 浏览: 157272 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

(五): Java中方法的重写(override)

阅读更多
public class Parent{
	public void output()throws NullPointerException{
		System.out.println("parent");
	}
}
public class Child extends Parent{
	public void output() throws Exception{
		System.out.println("child");
	}
}
public class OverrideTest {
	public static void main(String[] args) {
		Parent p = new Child();
		p.output();
         }
}

问题:上述程序能编译通过吗?如果不能,请说明理由。如果能编译通过,那么能执行成功吗?如果不能执行成功,请说明理由。如果能执行成功,那么程序执行的结果是什么?
解答:上述程序无法编译通过。
分析:此为考察java中方法重写的要求,由于父类抛出的异常为NullPointerException,而子类抛出的异常为Excetpion, 违背了方法重写,子类中方法抛出的异常范围不能大于父类中方法抛出的异常的范围的原则,所以编译不能通过。
   
总结:关于java中方法重写(override)的要求:
     1、子类中的方法与父类中的方法有相同的返回类型
     2、子类中的方法与父类中的方法有相同的方法名称
     3、子类中的方法与父类中的方法有相同的参数列表
     4、子类中的方法的访问级别不能低于父类中该方法的访问级别(举例:父类方法的级别是protected,那么子类重写该方法,其级别必须是protected或者public,一定和父类的访问级别相同或者更宽,否则编译无法通过)
     5、子类中方法抛出的异常范围不能大于父类中方法抛出的异常的范围(子类可以不抛出异常也满足该原则,即是说父类抛出异常,子类不抛出异常,编译通过没问题。)
分享到:
评论
4 楼 urfriend 2009-11-27  
子类和父类都是public的
什么道理?
wondering
3 楼 flyice 2009-03-02  
还有一点,子类的方法可以返回父类方法返回类型的派生类型。
2 楼 L.G.Alexander 2009-03-02  
谢谢您bludger,提醒了我,已经修正了!欢迎批评指正!呵呵
1 楼 bludger 2009-03-02  
你这个例子应该有错误的
父类和子类没继承关系吧...

相关推荐

    静态(static)方法重写(override)

    在面向对象编程语言中,如Java,方法重写(override)是一种重要的特性,它允许子类提供一个与父类相同签名的方法实现。这种方法的实现允许在运行时根据对象的实际类型来确定调用哪个版本的方法,这正是多态性的基础...

    JAVA中的方法重写与方法重载区别

    方法重写(Override)是指在子类中定义的一个方法,其名称、返回类型及参数列表正好与父类中某个方法的名称、返回类型及参数列表相匹配,这样可以重写父类的方法。在方法重写中,子类可以对父类的方法进行修改或扩充...

    Java 继承和方法重写

    方法重写则是继承机制中一个关键的特性,允许子类对父类的方法进行定制化,以满足特定需求。 **一、Java 继承** 1. **定义与语法**: Java 中的继承使用 `extends` 关键字实现。例如,如果 `Animal` 是一个类,`...

    Java 重写(Override)与重载(Overload).pdf

    根据提供的文件信息,我们可以深入探讨Java中的两个核心概念:重写(Override)与重载(Overload)。这两个概念在面向对象编程中非常重要,尤其是在Java这样的语言中。 ### Java中的重写(Override) #### 什么是重写? ...

    Java中方法重写与方法重载的比较.pdf

    Java中的方法重写(Overriding)与方法重载(Overloading)是面向对象编程中两个重要的概念,它们在实现多态性和代码复用时起到关键作用。本文将深入探讨这两个概念,以及它们在Java编程中的具体应用和区别。 1. **...

    Java方法的艺术:重载与重写的深度解析

    在 Java 编程语言中,方法的重载(Overloading)和重写(Overriding)是面向对象编程的重要概念。这两种技术使得方法能够在不同的上下文中表现出不同的行为,从而增强了代码的灵活性和可读性。下面将深入探讨 Java ...

    Java重写.docx

    Java重写知识点详解 Java中的重写(Override)和重载(Overload)是两个重要的概念,它们都是指方法的定义方式,但是它们之间存在着明显的区别。 方法的重载 在同一个类中,可以定义多个方法,它们的方法名相同,...

    从虚拟机角度看Java多态->(重写override)的实现原理

    在Java中,多态性主要通过继承、接口和方法重写(Override)来实现。这里我们将深入探讨从虚拟机(JVM)的角度来看,Java如何通过方法重写来实现多态。 首先,理解Java的类加载机制对于解析多态性至关重要。当Java...

    Java重写(Override)&重载(Overload).pdf

    在Java中,为了确保正确地重写方法,可以使用`@Override`注解。例如: ```java class Animal { public void move() { System.out.println("动物可以移动"); } } class Cat extends Animal { @Override public...

    方法重载和方法重写

    5. **关键字**:Java中,使用`@Override`注解标记重写方法,有助于编译器检查是否真正实现了重写。 ### 应用场景 1. **方法重载**:在处理多种数据类型时,如数学运算库中,可以为加法、减法等提供重载方法,分别...

    java中的重载和重写的区别

    在Java中,你可以通过`super`关键字来调用父类的被重写方法。以下是一个重写的例子: ```java public class Parent { public void method(int a) { System.out.println("Parent method called with " + a); } } ...

    java子类重写父类的方法.doc

    在Java编程语言中,子类继承父类后,可以通过重写(Override)的方式改变或扩展父类的行为。本文将深入探讨Java中子类如何正确地重写父类的方法,并详细介绍重写的六大规则。 #### 一、重写概述 重写(Override)...

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

    三、方法的重写(overwrite / override) 1. **引入**:方法的重写发生在子类中,当子类继承父类并需要改变或扩展父类的方法行为时。重写的方法必须与被重写的方法有相同的返回类型、名称和参数列表。 2. **举例**:...

    Java方法重载和方法重写的区别.docx

    Java编程语言中,方法的两种重要特性是方法重载(Overloading)和方法重写(Overriding)。这两种机制都是为了实现多态性,但它们在实际应用中有着明显的区别。 **方法重载(Overloading)**: 方法重载发生在同一...

    Java重写和重载概念及区别梳理

    在编程语言中,Java的重写(Override)和重载(Overload)是两个非常重要的概念,它们在类与对象的多态性中起到关键作用。理解并掌握这两个概念是成为一名合格的Java开发者的基础。 首先,我们来谈谈重写(Override...

    方法重写.zip

    在Java编程语言中,"方法重写"(Method Overriding)是面向对象特性的一个关键概念。它发生在子类继承父类时,子类可以提供一个与父类中相同签名的方法,但实现可能不同。这种方法重写允许子类扩展或定制父类的功能...

    java 重载,重写以及继承,多态的区别

    重载是指同一个类中的多个同名方法,重写是指子类对父类方法的重新实现,继承是指子类继承父类的成员变量和方法,而多态是指父类可以调用子类的方法。 在实际开发中,重载、重写、继承和多态都是非常重要的概念,...

    Java 程序显示类中方法的重写.docx

    Java 程序显示类中方法的重写 Java 是一种功能强大的编程语言,适用于各种应用场景。它被广泛用于企业级应用开发、移动应用开发、云计算、大数据处理等领域,是一门值得学习和掌握的编程语言。 在 Java 中,重写是...

    JAVA第一阶段测试题及答案.pdf

    8. 方法的Override:Java支持方法的Override,即子类可以重写父类中的方法。例如,在测试题8中,`public class Child extends Parent{ public void count() {} }`重写了父类中的方法count。 9. 变量的作用域:Java...

    java中重载与重写

    在Java编程语言中,方法的重载(Overloading)与重写(Overriding)是两个非常重要的概念。它们虽然只有一字之差,但其实质却大相径庭。理解这两者的不同对于深入掌握Java语言至关重要。 ### 一、重载(Overloading...

Global site tag (gtag.js) - Google Analytics