【面向对象-09】子类、父类方法重写和覆盖
目录
1).成员变量的重写
2).成员函数的重写
3).子类方法中对父类和子类同名成员的访问
4). 如何理解覆盖
1).成员变量的重写
变量仅仅是一个标识符来命名,子类和父类出现同名成员变量的时候,就是子类对父类成员变量的重写。
2).成员函数的重写
相比变量,一个函数并不仅仅是由函数名来标识的,而是访问修饰符、函数名、参数列表、返回值类型、异常声明共同标识的。子类中某一个函数的上述标识和父类某一个函数一致,则是成员函数的重写。
3).子类方法中对父类和子类同名成员的访问
[1]. 如果子类某个成员 (变量/函数) 不是重写父类的,子类中函数通过this、super和直接访问都是一样的,访问的都是子类中的这个成员 (变量/函数);
[2]. 如果子类某个成员 (变量/函数)是重写父类的:
子类中函数通过this和直接访问是访问子类的同名成员(变量/函数);
子类中函数通过super访问到的是父类对应的同名的成员(变量/函数)。
4). 如何理解覆盖
覆盖的含义:
指的面相接口编程 (多态) 的时候,将子类实例传递给父类/接口的引用之后,通过父类引用访问同名的方法和变量的时候,到底访问的是子类的成员还是父类的成员的问题。
{1}. 程序中出现 “父类引用.同名成员变量”时,访问的是父类的同名成员变量;
也就是:子类的同名成员变量并没有覆盖父类中的同名成员变量。
{2}.程序中出现 “父类引用.同名成员函数”时,访问的是子类的同名成员函数;
也就是:子类的同名成员变量一定覆盖父类中的同名成员函数。
【结论】同名变量找引用的类;同名函数找实例对象的类。
示例:
package com;class Fu {int num = 4;void show() {System.out.println("show Fu");}
}class Zi extends Fu {int num = 5;void show() {System.out.println("show Zi");}
}class T {public static void main(String[] args) {Fu f = new Zi();Zi z = new Zi();System.out.println(f.num);System.out.println(z.num);f.show();z.show();}
}
输出:
分析:
Fu f =new Zi();这句是多态,子类替换父类;
System.out.println(f.num); 同名变量看引用的类型 => 打印4
f.show(); 同名方法被子类同名方法覆盖,实际调的是子类的同名方法 => 打印show Zi
【面向对象-09】子类、父类方法重写和覆盖相关推荐
- 【Python】继承、父类、子类、方法重写、子类调用父类方法、super()函数、多继承
Python继承 2021/6/21 周一 学习内容:父类.子类.方法重写.子类调用父类方法.super()函数.多继承 Python入门,主要是看 菜鸟教程.w3school 网站,以及电子工业出版 ...
- Java面向对象之继承,方法重写,super关键字,员工类系列继承题
在程序中,如果想声明一个类继承另一个类,需要使用extends关键字. 格式: class 子类 extends 父类 {} 继承的好处 1.继承的出现提高了代码的复用性,提高软件开发效率. 2.继承 ...
- Java中父类方法重写有哪些需要注意的?
在继承关系中,子类会自动继承父类中公共的方法,但有时在子类中需要对继承的方法进行一些修改,即对父类的方法进行重写.需要注意的是,子类中重写的方法需要和父类被重写的方法具有相同的方法名.参数列表以及返回 ...
- C++子类父类成员函数的覆盖和隐藏实例详解
https://www.jb51.net/article/117380.htm 函数的覆盖 覆盖发生的条件: (1) 基类必须是虚函数(使用virtual 关键字来进行声明) (2)发生覆盖的两个函数 ...
- 关于C++子类父类成员函数的覆盖和隐藏
转载:http://blog.csdn.net/worldmakewayfordream/article/details/46827161 函数的覆盖 覆盖发生的条件: (1) 基类必须是虚函数(使用 ...
- java 面试题三十三 子类父类方法执行顺序的问题
. 判断以下Teacher类的main方法的运行结果(B) public class Teacher extends Person { public Teacher () { super(); } p ...
- 父类可以调用子类的方法吗_python类的继承、多继承及查找方法顺序
讲解类的继承,先用无__init__()方法的类讲解,会更容易理解 分三部分讲解 1.单继承(无__init__()方法) 继承方式:子类(父类): 方法重写:防止执行父类的方法.不想继承父类的某个方 ...
- day03--java基础编程:面向对象,构造方法,代码块讲解,this super,static,final,访问修饰符,方法重写,向上/下造型,main方法,抽象类,接口,设计模式,异常,内部类
1 Day06–面向对象1 1.1 面向对象 1.1.1 概念 推荐看的书:Thinking in java 概念:所谓的面向对象是一种编程思想,通过这种思想可以把生活中的复杂事情变得简单化,从原来的 ...
- day03--java基础编程:面向对象,构造方法,代码块讲解,this super,static,final,访问修饰符,方法重写,向上_下造型,main方法,抽象类,接口,设计模式,异常,内部类
1 Day06–面向对象1 1.1 面向对象 1.1.1 概念 推荐看的书:Thinking in java 概念:所谓的面向对象是一种编程思想,通过这种思想可以把生活中的复杂事情变得简单化,从原来的 ...
- 子类方法重写java_java-子类方法重写规则
java-子类方法重写规则 java-子类方法重写规则 ***(一)重写语法规则 :子类在继承了父类的某个方法之后,如果想要重写这个方法,则需要创建一个与父类方法的返回类型一样,名字一样,参数个数一样 ...
最新文章
- spring cloud微服务分布式云架构--hystrix的使用
- 安全的Web主机iptables防火墙脚本
- 「小程序JAVA实战」小程序视频上传方法的抽象复用(57)
- ASP.Net调试过程中弹出的浏览器端口和asp.net development server的端口不一样
- 在分类的意义上最稳定的物体是什么?
- 登录多实例MySQL失败,修改密码临时解决,原因不明
- spring的ModelAndView
- 1.OD-破解MTS DashBoard
- Effective Java之必要时进行保护性拷贝(三十九)
- 一口气管理几十个中断不是问题
- linux complete函数,Linux驱动中completion接口浅析(wait_for_complete例子,很好)
- C++标准库函数begin和end函数
- 测试计划剔除 log剔除_我是如何在整个公司面前被剔除的(以及为什么这样做很好)...
- python学习[第十四篇] 文件的输入与输出
- 二叉树最小单元结点的实现
- 【C++ Primer】第四章学习笔记 (复合类型)
- 如果查看oracle_home是否共享_现在还有小伙伴用XP系统吗?经常会共享打印问题...
- STM32利用DCMI对并口ADC高速数据采样
- SU战队专访:破而后立,晓喻新生
- 邮件监控云上脚本执行进度
热门文章
- 神策数据杨宁:券商财富管理数字化转型客户全生命周期(视频解读)
- 该怎么标注建筑图纸后进行保存?
- 【麦课】1~OEL的下载
- word没自动保存?===如何通过asd文件恢复
- python基础资料(Learn|Codecademy好用的工具)
- html5渐变色毛玻璃,基于CSS3实现的毛玻璃渐变效果
- FusionAccess模板制作并发放
- php有个schost.exe_svchost.exe是什么
- CODO是一款为用户提供企业多混合云、自动化运维、完全开源的云管理平台
- 视觉测量系统实现尺寸测量的4个步骤