在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. selenium -- 鼠标悬停

    针对页面上的二级菜单,需要鼠标悬停才能进行操作. /** * Clicks (without releasing) in the middle of the given element. This i ...

  2. ORDER BY 子句在视 图、内联函数、派生表、子查询和公用表表达式中无效

    SQL语句: select * from (select distinct t2.issue,cashmoney from (select distinct issue from lot_gamepa ...

  3. 利用简单的参数传递来实现单条查询的easyui-datagrid

    前一阵子老师给出了一个题目, 说让设计个表格, 学生系统的, 可以查询学生的信息和成绩, 科目自己定, 数据库建表也自己定. 数据库的建表可是建的相当的简陋, 反正老师不是很满意, 后来数据表格做出来 ...

  4. eclipise快捷键,留给以后备用

    快捷键无效解决办法: 1.考虑是否被其他应用占用,如QQ,QQ音乐,千千动听等 2.在eclispe查看是否被修改:Window->Preferences->General->Key ...

  5. JS数组去重办法大全

    第一种是比较常规的方法 思路: 1.构建一个新的数组存放结果 2.for循环中每次从原数组中取出一个元素,用这个元素循环与结果数组对比 3.若结果数组中没有该元素,则存到结果数组中 复制代码代码如下: ...

  6. luoguP1196(带权并查集)

    题目链接:https://www.luogu.org/problemnew/show/P1196 思路: 带权并查集.对每个结点,构造表示该结点的头结点,该结点距头结点的距离,该列的大小3个数组. 在 ...

  7. Passing the Message

    Passing the Message http://acm.hdu.edu.cn/showproblem.php?pid=3410 Time Limit: 2000/1000 MS (Java/Ot ...

  8. 127单词接龙 1· Word Ladder1

    找出最短路径 [抄题]: Given two words (beginWord and endWord), and a dictionary's word list, find the length ...

  9. php中session入memcached

    1.使用memcache扩展,提供的session处理器(session.save_handler) memcahe即可. 通过存储位置配置项(session.save_path),设置使用的memc ...

  10. Ubuntu部分命令的使用简介

    1.查看USB设备 lsusb #查看系统中的usb设备 lsusb –v  #查看详细的usb设备信息 2.ubuntu mount u盘 第一步:查看U盘信息 sudo fdisk -l 得到类似 ...