继承多态 知识要点

继承 extends

  • class 子类 extends 父类

  • 子类就可以不定义父类当中的成员了

  • 使代码重复使用

  • 继承之后要添加新成员,否则无意义,自己的成员优先

  • super 指定告诉编译器访问的父类中的成员,构造方法没有被继承,需要super调用。和this一样不能出现在static方法中。

  • super()调用父类的构造方法。必须要在第一行,并且不能和this()同时出现

  • 不同包中的子类用super引用

  • java不支持多继承 ,有接口

  • final 常量,方法不能被重写

  • 组合 把一个类作为另一个类的成员

  • 多态:不同的对象去完成某个行为会产生出不同的状态

  • 条件

    • 发生在继承条件下

    • 需要重写

    • 向上转型

  • 什么是向上转型?把子类对象给到父类对象的引用,也就是父类引用引用了子类对象

  • 子类重写父类成员函数,发生在动态绑定,编译期间无法绑定。父类引用 引用 子类对象,通过父类引用去调用父类和子类同名的方法,此时调用的是子类的方法。

    • 静态绑定使重在,编译阶段就绑定

    • 当子类继承父类之后,在实例化子类对象的时候,先要调用父类的构造方法,来帮助父类初始化。

  • 执行顺序:父类的静态->子类的静态->父类的实例-父类的构造-子类的实例-子类的构造

向上转型
class A {}
class B extends A {}
class C extends B {}
public class Test {public static void main(String[] args) {A a0=new A();//1A a1=new B();//2A a2=new C();//3}
}
  • 父类引用只能调用父类,不能调用子类特有方法

  • 调用的方法子类和父类都有,运行的时候会调用子类的方法,这叫动态绑定(晚绑定)

    • 编译的时候认为还是确实调用了父类的方法,运行的时候绑定到了子类当中

  • 静态绑定(早绑定):编译的时候就已经确定调用的方法

    1. 直接赋值

    2. 通过传参

    3. 通过返回值

  • 同一个引用调用了同一个方法,但是引用的对象不一样,表现得行为不一样,把这种思想称之为多态

向下转型
  • 不安全

  • 需要用instanceof进行判断

重写
  1. 方法名相同

  2. 参数列表相同(顺序、个数、类型)

  3. 返回值类型相同

  • 被final修饰的方法,使密封方法,不能被重写

  • 被static修饰的方法,不能被重写

  • 子类重写的访问权限要>=父类的 访问修饰限定符权限排序:private<default<protected<public

  • 被private修饰的方法使不能被重写的

  • 范围值类型构成父子类关系也成为重写,构成协变类型

  • 可以使用@override注释来显式指定

  • 在构造方法中调用父类和子类同名的方法时也会发生动态绑定。意味着构造方法内也会发生动态绑定。故应当避免在构造方法中调用重写的方法。

  • 先分配内存空间再调用构造方法

多态可以降低圈复杂度

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/761349.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python 安装目录及虚拟环境详解

Python 安装目录 原文链接&#xff1a;https://blog.csdn.net/xhyue_0209/article/details/106661191 Python 虚拟环境 python 虚拟环境图解 python 虚拟环境配置与详情 原文链接&#xff1a;https://www.cnblogs.com/hhaostudy/p/17321646.html

下沉市场会给蔚来带来新“未来”吗?

2023年以来&#xff0c;在价格战、技术战等多重因素的催化下&#xff0c;我国汽车行业的洗牌在持续进行。一边是小米等手机厂商跨界入场&#xff0c;一边是三菱等合资品牌淡出大众视野。市场格局正在重塑。 这种情况下&#xff0c;现有车企的一举一动都备受市场关注。其中&…

【React 函数式组件知识点】

函数式组件的生命周期 使用 useEffect 钩子函数可以模拟类组件的生命周期 useEffect(() > { // 类似于 componentDidMount window.addEventListener(mousemove, () > {}); return () > { // 类似于 componentWillUnMount window.removeE…

09 事务和连接池

文章目录 properties文件连接池service层实现类dao层实现类dao层实现类 连接池类: 创建线程池静态常量&#xff0c;用于放连接。 创建Properties静态常量&#xff0c;用于解析properties文件 静态代码块中&#xff0c;解析properties文件&#xff0c;将解析结果用于创建连接池 …

手写一个跳表,跪了。。。

尼恩说在前面 在40岁老架构师 尼恩的读者交流群(50)中&#xff0c;最近有小伙伴拿到了一线互联网企业如得物、阿里、滴滴、极兔、有赞、希音、百度、网易、美团、蚂蚁、得物的面试资格&#xff0c;遇到很多很重要的相关面试题&#xff1a; 手写一个跳表&#xff1f; redis为什…

技能篇:如何批量替换文件名称 一招批量替换文件名

在日常生活和工作中&#xff0c;我们经常需要处理大量的文件&#xff0c;而文件名的设置对于文件的管理和查找至关重要。一个清晰、有序的文件名能够帮助我们快速找到所需的文件&#xff0c;提高工作效率。然而&#xff0c;随着时间的推移和项目的增多&#xff0c;我们可能需要…

【JS】JavaScript 中的原型与原型链

JavaScript 中的原型与原型链 原型1 函数中 prototype 指向原型对象2 对象中 __proto__ 指向原型对象3 原型对象中 constructor 指向构造函数4 __proto__ 与 [[Prototype]] 的关系5 所有非空类型数据&#xff0c;都具有原型对象6 new运算符做了哪些事情 原型链1 举个栗子1.1 直…

使用有道bce-embedding-vase-v1模型构建知识向量库并进行相似度搜索

国产embedding 最开始使用LangChain结合通义千问API实现了基础的RAG&#xff08;Retrieval-Augmented Generation&#xff09;过程&#xff0c;当时认为embedding模型似乎是LangChain的一部分&#xff0c;然后又通过学习OpenAI的API发现&#xff0c;其实使用embedding模型不需要…

智能农业:农业技术与效益

文章目录 什么是智慧农业&#xff1f;智能农业的好处智能农业技术物联网智能农业解决方案智能农业软件和移动应用程序智能农业的挑战作物监测卫星智能农业解决方案使用卫星数据数据测量历史数据和预测在便携式设备上使用应用程序 智能农业的未来参考 现代技术的发展影响着人类活…

走进jvm之垃圾回收器篇

这里我想首先说明一下&#xff0c;虽然我们经常会拿垃圾回收器来做比较&#xff0c;虽然想挑选一个最好的收集器出来&#xff0c;但是目前也没有说哪一款收集器是完美的&#xff0c;更不存在万能的收集器&#xff0c;我们也只是对收集器选择最适合场景的一个收集器。 那么作者将…

深度学习算法工程师面试常见问题及解答

基础知识和理论&#xff1a; 解释什么是深度学习以及它与机器学习的关系。描述神经网络的基本结构和工作原理。什么是反向传播算法&#xff0c;它是如何工作的&#xff1f;激活函数的作用是什么&#xff1f;常见的激活函数有哪些&#xff1f;什么是损失函数&#xff1f;常见的损…

深入解析权限之钥RBAC模型!

在2B系统中设计中&#xff0c;角色基于访问控制&#xff08;RBAC&#xff0c;Role-Based Access Control&#xff09;是最常见的权限管理模型之一。它将权限分配给角色而非个别用户&#xff0c;简化了权限管理的过程。接下来我们一起了解下几种常见的RBAC模型。 1. 标准 RBAC&…

数据仓库数据质量监控

每日同步的表数据进行表行数非0校验:通过编写脚本或者工具,定期检查每个表的行数是否大于0,以确保数据同步的完整性。业务主键唯一性校验:对每个表的业务主键字段进行唯一性校验,避免重复数据的插入。下面的代码就是对生产环境和测试环境,对主键id验证是否有重复值。 im…

母亲的奶牛(蓝桥杯,acwing每日一题)

题目描述&#xff1a; 农夫约翰有三个容量分别为 A,B,C升的挤奶桶。 最开始桶 A 和桶 B 都是空的&#xff0c;而桶 C 里装满了牛奶。 有时&#xff0c;约翰会将牛奶从一个桶倒到另一个桶中&#xff0c;直到被倒入牛奶的桶满了或者倒出牛奶的桶空了为止。 这一过程中间不能有…

每日学习笔记:C++ STL 的无序容器(unordered_set、unordered_map)

定义 特性 能够快速查找元素 操作函数 负载系数 元素个数 / bucket个数 提供哈希函数 提供等价准则 方法一&#xff1a;重写元素的操作符 方法二&#xff1a;自定义函数对象 提供自定义哈希函数和等价准则例子 例一&#xff1a;传入函数对象 例二&#xff1a;传入lambda 检…

蓝桥杯2023省赛:矩阵总面积|模拟、数学(几何)

题目链接&#xff1a; 0矩形总面积 - 蓝桥云课 (lanqiao.cn) 说明&#xff1a; 参考文章&#xff1a;矩形总面积计算器&#xff1a;计算两个矩形的总面积&#xff0c;包括重叠区域_矩形r1的左下角坐标为x1, yl 、宽度为w1、高度为h1, 矩形r2的左下角坐标为x2,y2、宽-CSDN博客…

移卡 2023 年支付GPV超 2.88 万亿 龙头地位稳固

3月21日&#xff0c;中国领先的基于支付的科技平台——移卡有限公司&#xff08;以下简称“移卡”或“公司”&#xff0c;股份代号&#xff1a;09923.HK&#xff09;发布2023年年度业绩报告。与上年同期相比&#xff0c;移卡2023年收入同比增长15.6%&#xff0c;至人民币39.51亿…

Java代码基础算法练习-求一个三位数的各位平方之和-2024.03.21

任务描述&#xff1a; 输入一个正整数n&#xff08;取值范围&#xff1a;100<n<1000&#xff09;&#xff0c;然后输出每位数字的平方和。 任务要求&#xff1a; 代码示例&#xff1a; package march0317_0331;import java.util.Scanner;public class m240321 {public …

YOLOV5 改进:替换backbone为Swin Transformer

1、前言 本文会将YOLOV5 backbone更换成Swin Transformer 具体为什么这样实现参考上文:YOLOV5 改进:替换backbone(MobileNet为例)-CSDN博客 这里只贴加入的代码 训练结果如下: 2、common文件更改 在common文件中加入下面代码: 这里是swin transformer的实现,参考:…

如何申请免费通配符SSL证书

步骤1&#xff1a;了解免费通配符证书的选项 首先&#xff0c;您需要了解哪些机构或项目提供免费的通配符证书。目前绝大部分CA机构只提供免费的单域名证书&#xff0c;只有少数服务商提供商可以提供免费的通配符证书&#xff0c;比如JoySSL。 免费通配符证书申请地址https://…