在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何时该使用覆盖?的更多相关文章

  1. c#和java中的方法覆盖——virtual、override、new

    多态和覆盖 多态是面向对象编程中最为重要的概念之一,而覆盖又是体现多态最重要的方面.对于像c#和java这样的面向对象编程的语言来说,实现了在编译时只检查接口是否具备,而不需关心最终的实现,即最终的实 ...

  2. JAVA - 请说明”static”关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?

    请说明"static"关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法? "static"关键字表明一个成 ...

  3. C++中的重载隐藏覆盖&&JAVA中的重载覆盖&&多态

    class 类继承默认是private, struct 默认继承是public C++中的隐藏: 只要派生类中出现和基类一样的函数名,基类中的函数就会被派生类中的函数给隐藏(如果派生类和基类中的函数名 ...

  4. Java之重载与覆盖

    有的时候,类的同一种功能有多种实现方式,到底采用哪种实现方式,取决于调用者给定的参数.例如我们最常用的System.out.println()能够打印出任何数据类型的数据,它有多种实现方式.运行时,J ...

  5. java中重载和覆盖(又称重写)的区别

    初次见到这两个单词并没有什么特别的感觉,但是时间长了,却发现书上一会儿用override,一会儿又用overload,搞得我的迷迷糊.于是就做了个总结,希望能对和我一样对这两个概念模糊不清的网友有一个 ...

  6. java系列--重载和覆盖小结

    继承中属性的隐藏和方法的覆盖      java中规定,子类用于隐藏的变量可以和父类的访问权限不同,如果访问权限被改变,则以子类的权限为准      java中允许子类的变量与父类变量的类型完全不同, ...

  7. java 的重写(覆盖) 和重载的区别

    方法的的重写(覆盖) 在类继承中,子类可以修改从父类继承来的行为,也就是说子类能创建一个与父类方法有不同功能的方法,但具有相同的:名称.返回类型.参数列表.如果在子类中定义一个方法,其方法名称.返回值 ...

  8. java 内部类可以被覆盖吗

    如果创建了一个内部类,然后继承其外围类并重新定义内部类时,"覆盖"内部类就好像是其外围类的一个方法,并不起作用, 这两个内部类是完全独立的两个实体,各自在自己的命名空间内 //: ...

  9. static关键字什么意思?Java中是否可以覆盖一个private或者是static的方法?

    答案:“static”关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问.Java中static方法不能被覆盖,因为方法覆盖是基于运行时动态绑定的,而static方法是编译 ...

随机推荐

  1. 双活部署前收集EMC存储设备信息

    以0.68服务器为例 1.拷贝emcgrab_Linux_v4.7.10.tar到linux服务器并将其解压到/tmp目录下 tar -xvf emcgrab_Linux_v4.7.10.tar -C ...

  2. Python+Webdriver,中文前加u是unicode格式编码的意思

    Python+Webdriver写脚本时,对一些输入框赋值会涉及到输入中文,这时需要在中文前加u 举个例子,在用百度搜索时,要在搜索输入框内输入值, 我用的编码格式是utf-8,向输入框内输入值是:d ...

  3. hdoj1043 Eight(逆向BFS+打表+康拓展开)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1043 思路: 由于自己对康拓展开用的太少,看到这个题没想到康拓展开,最开始打算直接转换为数字,但太占内 ...

  4. python之列表【list】

    这里介绍下列表的功能 #切片:列表[a:b],从下标为a开始,到下标为(b-1)的元素 # name = [0,1,2,3,4,5,6,7,8,9] # print(name[1:6]) # # 结果 ...

  5. handler------post传送方式

    package com.qianfeng.gp08_day26_hanlder2; import android.os.Bundle; import android.os.Handler; impor ...

  6. 如何进入/home/user/.wine

    命令行输入 :cd /home/user/.wine/drive_c/windows/fonts /home是linux的用户目录,/user是用户名/.wine是隐藏目录,凡是以.开头的都是隐藏目录 ...

  7. win 下 nginx 与 php的配置

    1.下载需要的软件包 php的windows版本(*注意这里下载非线程安全的,nginx使用的是cgi) http://windows.php.net/download/   nginx的window ...

  8. Halcon小函数的封装和代码导出

    一.Halcon小函数的封装和修改 1.名词解释: 算子:指Halcon中最基础.最底层的函数(即你看不到它的代码实现),一个算子只有一句话,例如threshold算子. 小函数:由多个算子组合成的函 ...

  9. jmeter完成数据批量添加

    Jmeter结构如图 目的: 需要在每个组织下面分别添加5个设备资源 思路: 1.先登录平台 2.进入系统配置页面 3.获取到每个区域的ID 4.在每个区域下面添加设备资源 重点及难点: 1.登录加密 ...

  10. 20172325 2017-2018-2 《Java程序设计》第九周学习总结

    20172325 2017-2018-2 <Java程序设计>第九周学习总结 教材学习内容总结 异常 1.学习了异常的基本概念: 2.区分异常与错误: 一个异常是指一个定义非正常情况或错误 ...