- 浏览: 521862 次
- 性别:
- 来自: 杭州
-
文章分类
- 全部博客 (114)
- C基础 (1)
- C指针 (0)
- C语言库函数相关 (1)
- Linux (2)
- Linux网络编程 (1)
- PostgreSQL (0)
- Redis (2)
- Java Web (2)
- JAVA基础 (35)
- Ubuntu (8)
- Android (2)
- MySQL (3)
- 日志 (1)
- 书虫 (1)
- 数据结构 (0)
- 算法 (0)
- 开发工具 (1)
- 转载 (13)
- 英语 (18)
- tomcat启动脚本分析 (3)
- Oracle基础 (4)
- tomcat源码分析 (3)
- tomcat (1)
- Java相关 (1)
- Oracle基本原理--Oracle体系结构 (0)
- Oracle基本原理--表 (0)
- Oracle基本原理--索引 (0)
- Oracle基本原理--事务 (0)
- Oracle开发--SQL (1)
- Oracle基本原理--PL/SQL (0)
- Oracle基本原理--常用函数 (0)
- Oralce管理--用户及权限管理 (0)
- Oracle管理--安装调试 (0)
- Oracle管理--备份恢复 (0)
- Oralce管理--数据迁移 (0)
- Oracle管理--闪回 (0)
- Oracle管理--故障处理 (0)
- Oracle优化原理--统计信息 (0)
- Oracle优化原理--执行计划 (0)
- Oracle优化原理--诊断工具 (0)
- Oracle优化原理--深入理解表 (0)
- Oracle优化原理--深入理解索引 (0)
- Oracle优化原理--表连接原理 (0)
- Java--OOP (0)
- Java--异常 (0)
- Java--泛型 (0)
- Java--集合 (0)
- Java--IO (0)
- Java--枚举类型 (0)
- Java--注释 (0)
- Java--多线程 (0)
- Java--XML (0)
- Java--JDBC (3)
- Servlet (0)
- JSP (0)
- JSTL (0)
- 设计模式 (0)
- DAO与MVC (0)
- Javascript (2)
- Ajax (0)
- JQuery (0)
- HTML/CSS (0)
- 前端相关 (1)
- HTTP (0)
- TCP/IP (0)
- GO基础 (0)
最新评论
-
jsonmong:
推荐一个开发平台,采用的是插件化的设计思想,效果很不错的。ht ...
构建Java Web开发环境 -
wxm198427:
首先表示辛苦了!我想问个问题:我的是windows 7 x64 ...
Oracle 11g R2 for Win7旗舰版(64位)的安装步骤 -
握着橄榄枝的人:
我之前按照你的update mysql.user set pa ...
Windows7下MySQL5.5.20免安装版的配置 -
confident_f:
安装了32的客户端后,用plsql导入导出表有问题,生成不了d ...
Oracle 11g R2 for Win7旗舰版(64位)的安装步骤 -
confident_f:
安装数据库的时候第9步卡住了 是怎么回事呢?
Oracle 11g R2 for Win7旗舰版(64位)的安装步骤
覆盖是指父子类之间的关系,当子类继承父类中所有可能被子类访问的成员方法时,如果子类的方法名与父类的方法名相同,那么子类就不能继承父类的方法,此时称为子类的方法覆盖了父类的方法。覆盖体现了子类补充或者改变父类方法的能力,通过覆盖,可以使一个方法在不同的子类中表现出不同的行为。
下面通过一个具体的实例介绍如何实现方法的覆盖。
本实例主要实现定义一个动物类Animal及它的子类Bird,具体步骤如下:
(1)创建一个名称为Animal的类,在该类中声明一个成员方法cry(),具体代码如下:
(2)创建一个Animal类的子类Dog类,在该类中覆盖了父类的成员方法cry(),具体代码如下:
(3)创建一个Animal类的子类Cat类,在该类中覆盖了父类的成员方法cry(),具体代码如下:
(4)创建一个Animal类的子类Cattle类,在该类中不定义任何方法,具体代码如下:
(5)创建一个名称为Zoo的类,在该类的main() 方法中创建子类Bird的对象并为该对象分配内存,然后对象调用该类的成员方法,具体代码如下:
(6)运行本实例的结果如下:
执行dog.cry();语句时的输出结果:
狗发出汪汪的叫声!
执行cat.cry();语句时的输出结果:
猫发出喵喵的叫音!
执行cattle.cry();语句时的输出结果:
动物发出叫声!
从上面的运行结果中可以看出,由于Dog类和Cat类都重载了父类的方法cry(),因此执行的是子类中的cry()方法,因为Cattle类没有重载父类的方法,所以执行的是父类中的cry()方法。
注意:
在进行方法覆盖时,需要注意一下内容:
●子类不能覆盖父类中声明为final或者static的方法。
●子类必须覆盖父类中声明为abstract的方法,或者子类也应该声明为abstract。
●子类覆盖父类中的同名方法时,子类的方法声明也必须和父类中被覆盖的方法声明一样。
下面通过一个具体的实例介绍如何实现方法的覆盖。
本实例主要实现定义一个动物类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。
●子类覆盖父类中的同名方法时,子类的方法声明也必须和父类中被覆盖的方法声明一样。
发表评论
-
foreach循环
2013-06-24 16:15 1496从JDK1.5开始,Java提供了一个更简单的循环:forea ... -
可变参数
2013-06-24 15:38 1225从JDK1.5开始,Java允许使用可变参数为方法指定数量不确 ... -
泛型(core java 笔记)
2013-06-18 16:18 20741.为什么引入泛型 package generic; ... -
两个程序的说明
2010-10-19 09:26 11661、程序1的结果是: clas ... -
构造器初始化
2010-10-18 14:42 1535可以用构造器来进行初始化。在运行时刻,可以调用方法或执行某些动 ... -
成员初始化
2010-10-18 07:55 1247Java尽力保证:所有变量在使用前都能得到恰当的初始化。 对 ... -
线程的死锁
2010-10-11 19:21 1524当两个线程相互等待对方释放同步监视器时就会发生死锁,Java虚 ... -
线程的同步
2010-10-11 19:00 1290一个经典的关于线程安全性的问题:银行取钱问题。 银行取钱的基 ... -
java网站收集
2010-10-10 18:13 1295JAVA开发者最常去的25个英文网站:http://www.i ... -
控制线程
2010-10-10 16:06 20271、线程睡眠:sleep 如果我们需要让当前正在执行的线程暂 ... -
线程的状态
2010-09-28 19:00 1078线程从创建到执行完毕的整个过程称为线程的生命周期,在整个生命周 ... -
Java中Thread类的start()和run()的区别
2010-09-27 15:33 41391、start()方法来启动线程,真正实现了多线程运行,这时无 ... -
Java中创建线程的两种方法
2010-09-26 10:18 5648在Java中创建线程有两种方法:继承Thread类和实现Run ... -
创建String对象过程的内存分配小结
2010-09-23 20:32 2796常量池(Constant Pool):指的是在编译期被确定,并 ... -
Java堆和栈的区别 经典总结(转载)
2010-09-18 16:48 1289栈与堆都是Java用来在Ram中存放数据的地方。 与C++不 ... -
Java初学者都必须理解的七大问题
2010-09-18 10:36 1133问题一:我声明了什么 ... -
关于计算java程序运行时间(转载)
2010-09-18 09:22 1136//第一种,伪代码 long startTime= ... -
for循环的优化
2010-09-17 20:29 2159在程序中经常用到for循环,当一些算法实时性要求非常高时,对f ... -
详细解析Java中抽象类和接口的区别(转载)
2010-09-17 10:16 1127在Java语言中,abstract class和inter ... -
集合类(四):Map集合
2010-09-16 20:26 21555、Map集合 Map集合为映射类型,映射与集和列表有明显的区 ...
相关推荐
这种方法不仅简单有效,而且成本低廉。 #### 二、功率放大器作为基站发射机评估天馈系统 当基站位置选定并完成天馈系统架设后,下一步是对天馈系统的性能进行评估。这一步骤对于确保基站正常运行至关重要。此时,...
这种方法不仅适用于棋盘覆盖问题,还可以应用于其他很多领域,如排序算法(如快速排序和归并排序)、计算几何、图形学和网络流问题等。 在实际编程实现中,分治法通常与递归结合,形成递归分治算法。对于棋盘覆盖...
这些函数能够帮助我们执行简单的算术运算、数值转换以及进行数学计算。 - **ABS(x)**:返回`x`的绝对值。例如,`ABS(-10)`返回10。 - **BIN(x)**:返回`x`的二进制表示。如果需要获取八进制或十六进制表示,则可以...
它定义了一种简单的请求/响应机制,允许不同厂商生产的控制设备通过公共通信线路进行信息交换。Modbus支持多种传输介质,包括串行端口和以太网等。 #### 二、Modbus通讯模式 Modbus支持两种主要的数据传输模式:...
### SimpliciTI 应用举例用户指南详解 #### 一、SimpliciTI 简介 **SimpliciTI**是一种专为低射频网络设计的简易低功耗射频网络协议。它特别适用于那些要求长电池寿命、低数据速率以及较小占空比的应用场景。这类...
### 常用DEBUG命令的功能及使用举例 #### 一、DEBUG的主要用途及DEBUG的调用 DEBUG是一款专为汇编语言设计的强大调试工具。它不仅支持单步执行、设置断点等基本调试功能,还允许用户直接在环境中执行汇编指令。这...
下面是一个简单的例子,演示如何将键盘输入的文本写入文件,直到输入`@`为止: ```c #include int main() { FILE *fpout; char ch; if((fpout=fopen("file_1", "w"))==NULL) { printf("Cannot open this file...
1. **文件覆盖**:确保文件上传时不覆盖已有文件,可以使用时间戳或随机字符串作为文件名的一部分。 2. **文件类型验证**:仅接受特定类型的文件,防止恶意代码(如`.php`)上传并执行。 3. **文件大小限制**:限制...
比如,一个简单的实例可能是创建一个"Person"类,包含姓名、年龄属性,以及说话的方法。通过继承,可以创建更具体的类,如"Student"或"Teacher"。这些类可以封装数据,并通过多态性实现不同行为。 接着,我们可能会...
- **多样的图表类型**:支持11种标准系列类型和10种扩展系列类型,覆盖了大多数常见的图表需求。 - **丰富的数学和统计函数**:提供了16种内置的数学和统计函数,有助于进行数据处理和分析。 - **动态图表效果**:...
简单项目可能只需要少量的测试用例即可覆盖大部分功能,而复杂项目则需要更全面和深入的测试策略来确保质量。 **总结** 编写测试用例是软件开发过程中不可或缺的一部分,它不仅有助于提高软件质量,还能提升测试...
此外,为了提高代码效率,采用了静态覆盖技术来优化局部变量的存储。 #### 四、MPLAB IDE与PICC编译器的集成 MPLAB IDE是一个集成开发环境,支持多种Microchip单片机的开发。将PICC编译器集成到MPLAB IDE中可以极...
在这个示例中,`LoudDog`继承自`Dog`,并通过覆盖`makeSound`方法来改变其行为。 #### 六、总结 通过上述示例,我们可以看到Lua中的元表和元方法为我们提供了非常强大的功能。不仅可以重写表的基本操作,还能通过...
- **成熟期** (1997年 - 1999年): 发布5.0版本,引入了更多的数据类型和面向对象特性,工具箱数量大幅增加,覆盖了广泛的科学和技术领域。 - **最新版本** (2004年): 当前最新版本为7.0版(R14),具备更强大的计算...
在工业自动化领域,模拟电位器(Analog Potentiometer)是一种常见的电子元件,用于提供可变电阻,进而...通过上述方法,工程师们可以更好地利用这种简单但功能强大的元件,为工业机器人的控制带来更高的灵活性和效率。
它提供了一种简单的方法来保存和加载应用程序的状态信息,如用户偏好设置、最近打开的文件列表等。QSettings支持多种存储格式,如INI文件、XML文件等,这使得它非常灵活。 以上只是QT框架中常用类的一小部分介绍。...
模式分析的应用覆盖了广泛领域,从复杂的生物信息学到相对简单的文档检索等。.. 本书所描述的核方法为所有这些学科提供了一个有力的和统一的框架,推动了可以用于各种普遍形式的数据 (如字符串、向量、文本等) 的...
手工编程是通过编程人员直接编写程序代码来完成的,这种方法适用于简单零件和点位加工,要求编程人员不仅要具备扎实的工艺知识、数值计算能力,还要对数控代码有充分的理解和熟悉。 自动编程则依赖于计算机软件来...
除了简单随机抽样,还有系统抽样和分层抽样等方法。系统抽样是从总体中按照固定的间隔抽取样本,适用于总体有序的情况。而分层抽样则是根据总体的某些特征将其分为不同的层次,再从每个层次中独立抽取样本,这种方法...
这个“VHDL程序举例.rar”压缩包包含了丰富的VHDL编程实例,是学习和理解VHDL语言的一个宝贵资源。 在VHDL中,程序通常由实体(Entity)、结构体(Architecture)和库(Library)组成。实体定义了硬件接口,结构体...