`
supportopensource
  • 浏览: 521862 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

方法的覆盖简单举例

 
阅读更多
覆盖是指父子类之间的关系,当子类继承父类中所有可能被子类访问的成员方法时,如果子类的方法名与父类的方法名相同,那么子类就不能继承父类的方法,此时称为子类的方法覆盖了父类的方法。覆盖体现了子类补充或者改变父类方法的能力,通过覆盖,可以使一个方法在不同的子类中表现出不同的行为。
下面通过一个具体的实例介绍如何实现方法的覆盖。
本实例主要实现定义一个动物类Animal及它的子类Bird,具体步骤如下:
(1)创建一个名称为Animal的类,在该类中声明一个成员方法cry(),具体代码如下:
public class Animal{
	public Animal(){}
	public void cry(){
		System.out.println("动物发出叫声!");
	} 
}

(2)创建一个Animal类的子类Dog类,在该类中覆盖了父类的成员方法cry(),具体代码如下:
public class Dog extends Animal{
	public Dog(){}
	public void cry(){
		System.out.println("狗发出汪汪的叫声!");
	}
}

(3)创建一个Animal类的子类Cat类,在该类中覆盖了父类的成员方法cry(),具体代码如下:
public class Cat extends Animal{
	public Cat(){}
	public void cry(){
		System.out.println("猫发出喵喵的叫音!");
	}
}

(4)创建一个Animal类的子类Cattle类,在该类中不定义任何方法,具体代码如下:
public class Cattle extends Animal{}

(5)创建一个名称为Zoo的类,在该类的main() 方法中创建子类Bird的对象并为该对象分配内存,然后对象调用该类的成员方法,具体代码如下:
public class Zoo{
	public static void main(String args[]){
		Dog dog = new Dog();
		System.out.println("执行dog.cry();语句时的输出结果:");
		dog.cry();
		Cat cat = new Cat();
		System.out.println("执行cat.cry();语句时的输出结果:");
		cat.cry();
		Cattle cattle = new Cattle();
		System.out.println("执行cattle.cry();语句时的输出结果:");
		cattle.cry();
	}
}

(6)运行本实例的结果如下:
执行dog.cry();语句时的输出结果:
狗发出汪汪的叫声!
执行cat.cry();语句时的输出结果:
猫发出喵喵的叫音!
执行cattle.cry();语句时的输出结果:
动物发出叫声!

从上面的运行结果中可以看出,由于Dog类和Cat类都重载了父类的方法cry(),因此执行的是子类中的cry()方法,因为Cattle类没有重载父类的方法,所以执行的是父类中的cry()方法。

注意:
在进行方法覆盖时,需要注意一下内容:
●子类不能覆盖父类中声明为final或者static的方法。
●子类必须覆盖父类中声明为abstract的方法,或者子类也应该声明为abstract。
●子类覆盖父类中的同名方法时,子类的方法声明也必须和父类中被覆盖的方法声明一样。
分享到:
评论

相关推荐

    射频功率放大器应用举例.pdf

    这种方法不仅简单有效,而且成本低廉。 #### 二、功率放大器作为基站发射机评估天馈系统 当基站位置选定并完成天馈系统架设后,下一步是对天馈系统的性能进行评估。这一步骤对于确保基站正常运行至关重要。此时,...

    分治法解决棋盘覆盖

    这种方法不仅适用于棋盘覆盖问题,还可以应用于其他很多领域,如排序算法(如快速排序和归并排序)、计算几何、图形学和网络流问题等。 在实际编程实现中,分治法通常与递归结合,形成递归分治算法。对于棋盘覆盖...

    MySQL常用函数的举例及例子

    这些函数能够帮助我们执行简单的算术运算、数值转换以及进行数学计算。 - **ABS(x)**:返回`x`的绝对值。例如,`ABS(-10)`返回10。 - **BIN(x)**:返回`x`的二进制表示。如果需要获取八进制或十六进制表示,则可以...

    modbus举例~~~~~~~~~~~

    它定义了一种简单的请求/响应机制,允许不同厂商生产的控制设备通过公共通信线路进行信息交换。Modbus支持多种传输介质,包括串行端口和以太网等。 #### 二、Modbus通讯模式 Modbus支持两种主要的数据传输模式:...

    SimpliciTI应用举例用户指南

    ### SimpliciTI 应用举例用户指南详解 #### 一、SimpliciTI 简介 **SimpliciTI**是一种专为低射频网络设计的简易低功耗射频网络协议。它特别适用于那些要求长电池寿命、低数据速率以及较小占空比的应用场景。这类...

    常用DEBUG命令的功能及使用举例

    ### 常用DEBUG命令的功能及使用举例 #### 一、DEBUG的主要用途及DEBUG的调用 DEBUG是一款专为汇编语言设计的强大调试工具。它不仅支持单步执行、设置断点等基本调试功能,还允许用户直接在环境中执行汇编指令。这...

    c语言中的文件操作-函数及其举例

    下面是一个简单的例子,演示如何将键盘输入的文本写入文件,直到输入`@`为止: ```c #include int main() { FILE *fpout; char ch; if((fpout=fopen("file_1", "w"))==NULL) { printf("Cannot open this file...

    一个简单上传的小例子

    1. **文件覆盖**:确保文件上传时不覆盖已有文件,可以使用时间戳或随机字符串作为文件名的一部分。 2. **文件类型验证**:仅接受特定类型的文件,防止恶意代码(如`.php`)上传并执行。 3. **文件大小限制**:限制...

    c#源码举例非常多的实例

    比如,一个简单的实例可能是创建一个"Person"类,包含姓名、年龄属性,以及说话的方法。通过继承,可以创建更具体的类,如"Student"或"Teacher"。这些类可以封装数据,并通过多态性实现不同行为。 接着,我们可能会...

    绘图控件TeeChart的功能介绍与应用举例

    - **多样的图表类型**:支持11种标准系列类型和10种扩展系列类型,覆盖了大多数常见的图表需求。 - **丰富的数学和统计函数**:提供了16种内置的数学和统计函数,有助于进行数据处理和分析。 - **动态图表效果**:...

    黑盒测试用例设计方法

    简单项目可能只需要少量的测试用例即可覆盖大部分功能,而复杂项目则需要更全面和深入的测试策略来确保质量。 **总结** 编写测试用例是软件开发过程中不可或缺的一部分,它不仅有助于提高软件质量,还能提升测试...

    picc编译说明和举例

    此外,为了提高代码效率,采用了静态覆盖技术来优化局部变量的存储。 #### 四、MPLAB IDE与PICC编译器的集成 MPLAB IDE是一个集成开发环境,支持多种Microchip单片机的开发。将PICC编译器集成到MPLAB IDE中可以极...

    举例说明Lua中元表和元方法的使用

    在这个示例中,`LoudDog`继承自`Dog`,并通过覆盖`makeSound`方法来改变其行为。 #### 六、总结 通过上述示例,我们可以看到Lua中的元表和元方法为我们提供了非常强大的功能。不仅可以重写表的基本操作,还能通过...

    MATLAB数学实验举例

    - **成熟期** (1997年 - 1999年): 发布5.0版本,引入了更多的数据类型和面向对象特性,工具箱数量大幅增加,覆盖了广泛的科学和技术领域。 - **最新版本** (2004年): 当前最新版本为7.0版(R14),具备更强大的计算...

    工业机器人-【0033】扩大模拟电位器调节范围应用举例.7z

    在工业自动化领域,模拟电位器(Analog Potentiometer)是一种常见的电子元件,用于提供可变电阻,进而...通过上述方法,工程师们可以更好地利用这种简单但功能强大的元件,为工业机器人的控制带来更高的灵活性和效率。

    QT常用类的简单介绍

    它提供了一种简单的方法来保存和加载应用程序的状态信息,如用户偏好设置、最近打开的文件列表等。QSettings支持多种存储格式,如INI文件、XML文件等,这使得它非常灵活。 以上只是QT框架中常用类的一小部分介绍。...

    模式分析的核方法

    模式分析的应用覆盖了广泛领域,从复杂的生物信息学到相对简单的文档检索等。..  本书所描述的核方法为所有这些学科提供了一个有力的和统一的框架,推动了可以用于各种普遍形式的数据 (如字符串、向量、文本等) 的...

    数控机床编程应用与举例(ppt-82页).ppt

    手工编程是通过编程人员直接编写程序代码来完成的,这种方法适用于简单零件和点位加工,要求编程人员不仅要具备扎实的工艺知识、数值计算能力,还要对数控代码有充分的理解和熟悉。 自动编程则依赖于计算机软件来...

    统计抽样方法.pptx

    除了简单随机抽样,还有系统抽样和分层抽样等方法。系统抽样是从总体中按照固定的间隔抽取样本,适用于总体有序的情况。而分层抽样则是根据总体的某些特征将其分为不同的层次,再从每个层次中独立抽取样本,这种方法...

    VHDL 程序举例.rar_VHDL examples_VHDL 程序_vhdl keyboard_键盘VHDL_键盘扫描 vh

    这个“VHDL程序举例.rar”压缩包包含了丰富的VHDL编程实例,是学习和理解VHDL语言的一个宝贵资源。 在VHDL中,程序通常由实体(Entity)、结构体(Architecture)和库(Library)组成。实体定义了硬件接口,结构体...

Global site tag (gtag.js) - Google Analytics