Java何时该使用覆盖?
在Java编程中,什么时候该使用覆盖函数操作呢,很多人都知道有覆盖操作,但是到底什么时候该使用覆盖操作,还是有一些模糊的感觉,以下就举例来用代码分析就明白了, 举例生活中的案例,模拟制造手机的公司;
公司最早生产的第一台手机 01版本,只具备显示电话号码功能
package com.oop;
/**
* Java什么时候该使用覆盖操作
* @author Liudeli
*
*/
/**
* 公司最早生产的第一台手机 01版本,只具备显示电话号码功能
* @author Liudeli
*
*/
class Phone01 {
/**
* 拨打电话操作(显示电话号码)
*/
public void call() {
System.out.println("电话号码:13887986585");
}
}
/**
* 测试端程序
* @author Liudeli
*
*/
public class Demo5 {
/**
* 测试程序
* @param args
*/
public static void main(String[] args) {
// 拿到一台手机
Phone01 phone1 = new Phone01();
// 操作手机
phone1.call();
}
}
运行结果:
由于公司研发的不断努力,推出了Phone02升级版本,此版本具备显示姓名,电话号码功能;
package com.oop;
/**
* Java什么时候该使用覆盖操作
* @author Liudeli
*
*/
/**
* 公司最早生产的第一台手机 01版本,只具备显示电话号码功能
* @author Liudeli
*
*/
class Phone01 {
/**
* 拨打电话操作(显示电话号码)
*/
public void call() {
System.out.println("电话号码:13887986585");
}
}
/**
* 推出了Phone02升级版本,此版本具备显示姓名,电话号码功能
* @author Liudeli
*
*/
class Phone02 extends Phone01 { // 为什么要继承Phone01呢,因为Phone02是在Phone01的基础上研发出来的
/**
* 拨打电话操作(显示电话号码,显示姓名)
*/
public void call() {
System.out.println("姓名:刘德刘,电话号码:13887986585");
}
}
/**
* 测试端程序
* @author Liudeli
*
*/
public class Demo5 {
/**
* 测试程序
* @param args
*/
public static void main(String[] args) {
// 拿到一台手机
Phone01 phone = new Phone02();
// 操作手机
phone.call();
}
}
运行结果:
由于公司研发人员的不断加班加点,在年尾期间,推出了Phone10升级版本,此版本具备显示姓名,电话号码,显示大头贴功能;
package com.oop;
/**
* Java什么时候该使用覆盖操作
* @author Liudeli
*
*/
/**
* 公司最早生产的第一台手机 01版本,只具备显示电话号码功能
* @author Liudeli
*
*/
class Phone01 {
/**
* 拨打电话操作(显示电话号码)
*/
public void call() {
System.out.println("电话号码:13887986585");
}
}
/**
* 推出了Phone02升级版本,此版本具备显示姓名,电话号码功能
* @author Liudeli
*
*/
class Phone02 extends Phone01 { // 为什么要继承Phone01呢,因为Phone02是在Phone01的基础上研发出来的
/**
* 拨打电话操作(显示电话号码,显示姓名)
*/
public void call() {
System.out.println("姓名:刘德刘,电话号码:13887986585");
}
}
/**
* 推出了Phone10升级版本,此版本具备显示姓名,电话号码,大头贴显示功能
* @author Liudeli
*
*/
class Phone10 extends Phone02 { // 为什么要继承Phone02呢,因为Phone10是在Phone02的基础上研发出来的
/**
* 拨打电话操作(显示电话号码,显示姓名,显示大头贴)
*/
public void call() {
System.out.println("姓名:刘德刘,电话号码:13887986585,显示了帅气的大头贴照片...");
}
}
/**
* 测试端程序
* @author Liudeli
*
*/
public class Demo5 {
/**
* 测试程序
* @param args
*/
public static void main(String[] args) {
// 拿到一台手机
Phone01 phone = new Phone10();
// 操作手机
phone.call();
}
}
运行结果:
谢谢大家的观看,更多精彩技术博客,会不断的更新,请大家访问,
刘德利CSDN博客, http://blog.csdn.net/u011967006
Java何时该使用覆盖?的更多相关文章
- c#和java中的方法覆盖——virtual、override、new
多态和覆盖 多态是面向对象编程中最为重要的概念之一,而覆盖又是体现多态最重要的方面.对于像c#和java这样的面向对象编程的语言来说,实现了在编译时只检查接口是否具备,而不需关心最终的实现,即最终的实 ...
- JAVA - 请说明”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?
请说明"static"关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法? "static"关键字表明一个成 ...
- C++中的重载隐藏覆盖&&JAVA中的重载覆盖&&多态
class 类继承默认是private, struct 默认继承是public C++中的隐藏: 只要派生类中出现和基类一样的函数名,基类中的函数就会被派生类中的函数给隐藏(如果派生类和基类中的函数名 ...
- Java之重载与覆盖
有的时候,类的同一种功能有多种实现方式,到底采用哪种实现方式,取决于调用者给定的参数.例如我们最常用的System.out.println()能够打印出任何数据类型的数据,它有多种实现方式.运行时,J ...
- java中重载和覆盖(又称重写)的区别
初次见到这两个单词并没有什么特别的感觉,但是时间长了,却发现书上一会儿用override,一会儿又用overload,搞得我的迷迷糊.于是就做了个总结,希望能对和我一样对这两个概念模糊不清的网友有一个 ...
- java系列--重载和覆盖小结
继承中属性的隐藏和方法的覆盖 java中规定,子类用于隐藏的变量可以和父类的访问权限不同,如果访问权限被改变,则以子类的权限为准 java中允许子类的变量与父类变量的类型完全不同, ...
- java 的重写(覆盖) 和重载的区别
方法的的重写(覆盖) 在类继承中,子类可以修改从父类继承来的行为,也就是说子类能创建一个与父类方法有不同功能的方法,但具有相同的:名称.返回类型.参数列表.如果在子类中定义一个方法,其方法名称.返回值 ...
- java 内部类可以被覆盖吗
如果创建了一个内部类,然后继承其外围类并重新定义内部类时,"覆盖"内部类就好像是其外围类的一个方法,并不起作用, 这两个内部类是完全独立的两个实体,各自在自己的命名空间内 //: ...
- static关键字什么意思?Java中是否可以覆盖一个private或者是static的方法?
答案:“static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问.Java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译 ...
随机推荐
- Alpha Level (Significance Level)
1.Alpha Level (Significance Level,显著水平): What is it? 显著性水平α是指当零假设是正确的,但做出了错误决策的概率(即一类错误的概率).Alpha水平( ...
- Java动态代理的实现方法
AOP的拦截功能是由java中的动态代理来实现的.说白了,就是在目标类的基础上增加切面逻辑,生成增强的目标类(该切面逻辑或者在目标类函数执行之前,或者目标类函数执行之后,或者在目标类函数抛出异常时候执 ...
- Animation.wrapMode循环模式
WrapMode.Default:从动画剪辑中读取循环模式(默认是Once). WrapMode.Once:当时间播放到末尾的时候停止动画的播放. WrapMode.Loop:当时间播放到末尾的时候重 ...
- 在java中使用ffmpeg将amr格式的语音转为mp3格式
ffmpeg是一个非常强大的音视频处理工具,官网是:http://ffmpeg.org/. 由于ffmpeg在windows上和linux系统上的执行文件不一样(Windows上不需要安装ffmpeg ...
- anaconda+theano+keras手写字符识别新版
标题介绍运行环境了win7 看网上好多keras识别minist 但是一般由于版本问题,无法直接用,,,这里还要特别感谢keras中文文档作者(三当家SCP).教程整的非常好.还有就是最好你在安装an ...
- Python threading 单线程 timer重复调用函数
项目中需要使用定时器,每次都使用构造器函数调用: timer = threading.Timer(timerFlag, upload_position) timer.start() 打印线程后发现,每 ...
- iOS 多页面跳转同一页面时数据处理
如果 同一个界面, 会有10个数据源传进来, 此时 创建 一个总模型fullmodel 存储 10个model 数据, 创建 10个一样的cell, 在 不同数据, 用不同cell处理最好, 千万别于 ...
- OpenStack概念架构简述
什么是OpenStack OpenStack既是一个社区,也是一个项目和一个开源软件,它提供了一个部署云的操作平台或工具集.其宗旨在于,帮助组织运行为虚拟计算或存储服务的云,为公有云.私有云,也为大云 ...
- URL去重
import socket dictlist ={}; def ReadHost(): hosts = []; obn = open('d:/sss.txt', 'rb'); for line in ...
- stl string 小练习
最近没啥可写的 这里写下做的STL小练习 作为记录 去除指定字符串中的空格 获取文件名并根据名字创建临时文件,以TMP后缀结尾,已经为TMP后缀结尾文件则创建以XXX后缀结尾文件 读取一行输入内容 ...