目录

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】子类、父类方法重写和覆盖相关推荐

  1. 【Python】继承、父类、子类、方法重写、子类调用父类方法、super()函数、多继承

    Python继承 2021/6/21 周一 学习内容:父类.子类.方法重写.子类调用父类方法.super()函数.多继承 Python入门,主要是看 菜鸟教程.w3school 网站,以及电子工业出版 ...

  2. Java面向对象之继承,方法重写,super关键字,员工类系列继承题

    在程序中,如果想声明一个类继承另一个类,需要使用extends关键字. 格式: class 子类 extends 父类 {} 继承的好处 1.继承的出现提高了代码的复用性,提高软件开发效率. 2.继承 ...

  3. Java中父类方法重写有哪些需要注意的?

    在继承关系中,子类会自动继承父类中公共的方法,但有时在子类中需要对继承的方法进行一些修改,即对父类的方法进行重写.需要注意的是,子类中重写的方法需要和父类被重写的方法具有相同的方法名.参数列表以及返回 ...

  4. C++子类父类成员函数的覆盖和隐藏实例详解

    https://www.jb51.net/article/117380.htm 函数的覆盖 覆盖发生的条件: (1) 基类必须是虚函数(使用virtual 关键字来进行声明) (2)发生覆盖的两个函数 ...

  5. 关于C++子类父类成员函数的覆盖和隐藏

    转载:http://blog.csdn.net/worldmakewayfordream/article/details/46827161 函数的覆盖 覆盖发生的条件: (1) 基类必须是虚函数(使用 ...

  6. java 面试题三十三 子类父类方法执行顺序的问题

    . 判断以下Teacher类的main方法的运行结果(B) public class Teacher extends Person { public Teacher () { super(); } p ...

  7. 父类可以调用子类的方法吗_python类的继承、多继承及查找方法顺序

    讲解类的继承,先用无__init__()方法的类讲解,会更容易理解 分三部分讲解 1.单继承(无__init__()方法) 继承方式:子类(父类): 方法重写:防止执行父类的方法.不想继承父类的某个方 ...

  8. day03--java基础编程:面向对象,构造方法,代码块讲解,this super,static,final,访问修饰符,方法重写,向上/下造型,main方法,抽象类,接口,设计模式,异常,内部类

    1 Day06–面向对象1 1.1 面向对象 1.1.1 概念 推荐看的书:Thinking in java 概念:所谓的面向对象是一种编程思想,通过这种思想可以把生活中的复杂事情变得简单化,从原来的 ...

  9. day03--java基础编程:面向对象,构造方法,代码块讲解,this super,static,final,访问修饰符,方法重写,向上_下造型,main方法,抽象类,接口,设计模式,异常,内部类

    1 Day06–面向对象1 1.1 面向对象 1.1.1 概念 推荐看的书:Thinking in java 概念:所谓的面向对象是一种编程思想,通过这种思想可以把生活中的复杂事情变得简单化,从原来的 ...

  10. 子类方法重写java_java-子类方法重写规则

    java-子类方法重写规则 java-子类方法重写规则 ***(一)重写语法规则 :子类在继承了父类的某个方法之后,如果想要重写这个方法,则需要创建一个与父类方法的返回类型一样,名字一样,参数个数一样 ...

最新文章

  1. spring cloud微服务分布式云架构--hystrix的使用
  2. 安全的Web主机iptables防火墙脚本
  3. 「小程序JAVA实战」小程序视频上传方法的抽象复用(57)
  4. ASP.Net调试过程中弹出的浏览器端口和asp.net development server的端口不一样
  5. 在分类的意义上最稳定的物体是什么?
  6. 登录多实例MySQL失败,修改密码临时解决,原因不明
  7. spring的ModelAndView
  8. 1.OD-破解MTS DashBoard
  9. Effective Java之必要时进行保护性拷贝(三十九)
  10. 一口气管理几十个中断不是问题
  11. linux complete函数,Linux驱动中completion接口浅析(wait_for_complete例子,很好)
  12. C++标准库函数begin和end函数
  13. 测试计划剔除 log剔除_我是如何在整个公司面前被剔除的(以及为什么这样做很好)...
  14. python学习[第十四篇] 文件的输入与输出
  15. 二叉树最小单元结点的实现
  16. 【C++ Primer】第四章学习笔记 (复合类型)
  17. 如果查看oracle_home是否共享_现在还有小伙伴用XP系统吗?经常会共享打印问题...
  18. STM32利用DCMI对并口ADC高速数据采样
  19. SU战队专访:破而后立,晓喻新生
  20. 邮件监控云上脚本执行进度

热门文章

  1. 神策数据杨宁:券商财富管理数字化转型客户全生命周期(视频解读)
  2. 该怎么标注建筑图纸后进行保存?
  3. 【麦课】1~OEL的下载
  4. word没自动保存?===如何通过asd文件恢复
  5. python基础资料(Learn|Codecademy好用的工具)
  6. html5渐变色毛玻璃,基于CSS3实现的毛玻璃渐变效果
  7. FusionAccess模板制作并发放
  8. php有个schost.exe_svchost.exe是什么
  9. CODO是一款为用户提供企业多混合云、自动化运维、完全开源的云管理平台
  10. 视觉测量系统实现尺寸测量的4个步骤