面向对象进阶:多态

黑马程序员Java个人笔记

BV17F411T7Ao

p129~132

目录

多态 

多态调用成员的特点

调用成员变量

调用成员方法

理解

多态的优势 

解耦合 

多态的弊端

解决方案:强制类型转换

instanceof 

jdk14新特性,将判断和强转放一起 

总结


 

多态 

多态调用成员的特点

  • 成员变量调用:编译看左边,运行也看左边
  • 成员方法调用:编译看左边,运行看右边 

调用成员变量

  • 编译看左边:javac 编译代码时,会看左边的父类中有没有这个变量,有则编译成功,没有则失败
  • 运行也看左边:java 运行代码的时候,实际获取的就是左边父类中成员变量的值

调用成员方法

  • 编译看左边:javac 编译代码的时候,会看左边的父类中有没有这个方法,有则成功,没有则失败


  • 运行看右边:java 运行代码的时候,实际上运行的是子类中的方法

理解

Animal a = new Dog();
  • 现在用 a 去调用变量和方法。而 a 是 Animal 类型的,所以默认都会从 Animal 这个类中去找
  • 成员变量:因为是 Animal 类型的,看左边
  • 成员方法:如果子类对方法进行了重写,那么在虚方法中是会把父类的方法进行覆盖的
    • 编译看左边,因为 a 是Animal 类型的,看父类有没有方法
    • 运行看右边,因为 Animal 中的方法被覆盖了

多态的优势 

  • 在多态形式下,右边对象可以实现解耦合,便于扩展和维护
  • 定义方法的时候,使用父类型作为参数,可以接收所有子类对象,体现多态的扩展性与便利

解耦合 

  • 如下代码,当过了几天,不想让学生去工作了,让老师去工作,只需要把创建对象的这一部分修改就行了
  • 在调用 work 方法时,运行的是修改之后的老师这个类的方法

多态的弊端

  • 不能调用子类特有的功能 

解决方案:强制类型转换

  • 变回子类类型 

instanceof 

  • 变量名 instanceof 类名,用来判断变量所记录的对象是不是对应的类型

jdk14新特性,将判断和强转放一起 

总结

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

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

相关文章

系统思考沙盘模拟

今天《收获季节》沙盘模拟的第一天课程圆满结束,不仅从管理技巧的角度深入展开,还让大家体验了决策带来的直接影响。明天,我们将带领学员从系统思考和全局视角来重新审视这些问题,找到更深层的因果关系和系统性改进的思路。期待更…

AI 赋能直播新玩法 —— 无人直播,它到底藏着多少未知?

​ 在数字浪潮汹涌澎湃的时代,直播领域正历经一场前所未有的变革,AI 赋能的无人直播宛如一颗神秘新星,闯入大众视野,撩拨着人们的好奇心,可它究竟潜藏着多少待解谜团,尚无人能完全洞悉。 从技术的幽微深处…

【深度学习】热力图绘制

热力图(Heatmap)是一种数据可视化方法,通过颜色来表示数据矩阵中的数值大小,以便更直观地展示数据的分布和模式。热力图在许多领域中都有应用,尤其在统计分析、机器学习、数据挖掘等领域,能够帮助我们快速识…

ssm-springmvc-学习笔记

简介 简单的来说,就是一个在表述层负责和前端数据进行交互的框架 帮我们简化了许多从前端获取数据的步骤 springmvc基本流程 用户在原本的没有框架的时候请求会直接调用到controller这个类,但是其步骤非常繁琐 所以我们就使用springmvc进行简化 当用…

Axure原型设计:打造科技感可视化大屏元件

在数字化时代,数据可视化大屏已成为企业展示数据、监控业务状态的重要工具。一个设计精良的大屏不仅要有丰富的信息展示,更需具备强烈的科技感,以吸引观众的注意力并提升数据解读的效率。Axure,作为一款功能强大的原型设计工具&am…

supervision - 好用的计算机视觉 AI 工具库

Supervision库是一款出色的Python计算机视觉低代码工具,其设计初衷在于为用户提供一个便捷且高效的接口,用以处理数据集以及直观地展示检测结果。简化了对象检测、分类、标注、跟踪等计算机视觉的开发流程。开发者仅需加载数据集和模型,就能轻…

探索 Cesium 的未来:3D Tiles Next 标准解析

探索 Cesium 的未来:3D Tiles Next 标准解析 随着地理信息系统(GIS)和 3D 空间数据的快速发展,Cesium 作为领先的开源 3D 地球可视化平台,已成为展示大规模三维数据和进行实时渲染的强大工具。近年来,随着…

Launcher启动流程

Launcher启动流程分2个阶段: AMS systemReady() 会启动一个临时Activity:com.android.settings.FallbackHome,如下流程等到用户解锁成功后,FallbackHome轮询到有可用的RealHome包,会销毁掉自己,AMS发现没有…

链式栈的实现及其应用

目录 一、链式栈结构模型 二、链式栈的实现 2.1创建 2.2压栈 2.3出栈 2.4判断栈是否为空 2.5查看栈顶 2.6释放栈 三、应用 链式栈实际上就是基于链表,压栈和弹栈可分别看作头插和头删,链表尾部就是栈底,头指针就是栈顶指针 一、链式…

视频监控汇聚平台方案设计:Liveweb视频智能监管系统方案技术特点与应用

随着科技的发展,视频监控平台在各个领域的应用越来越广泛。然而,当前的视频监控平台仍存在一些问题,如视频质量不高、监控范围有限、智能化程度不够等。这些问题不仅影响了监控效果,也制约了视频监控平台的发展。 为了解决这些问…

Ubuntu 20.04LTS 系统离线安装5.7.44mysql数据库

Ubuntu 20.04LTS 系统离线安装5.7.44mysql数据库 环境下载 MySQL 5.7.44 包安装标题检查服务是否启动成功遇到的问题登陆&修改密码&远程访问 环境 操作系统:Ubuntu 20.04.4 LTS 数据库:MySQL 5.7.34 内核版本:x86_64(amd…

国信华源科技赋能长江蓄滞洪区水闸管护项目验收成果报道

“碧水悠悠绕古城,闸启长江万象新。”近日,由北京国信华源科技有限公司倾力打造的万里长江蓄滞洪区水闸管护项目,圆满通过验收,为这片鱼米之乡的防洪安全注入了新的科技活力。 长江之畔,水闸挺立,犹如干堤上…

Spring Boot教程之二十五: 使用 Tomcat 部署项目

Spring Boot – 使用 Tomcat 部署项目 Spring Boot 是一个基于微服务的框架,在其中创建可用于生产的应用程序只需很少的时间。Spring Boot 建立在 Spring 之上,包含 Spring 的所有功能。如今,它正成为开发人员的最爱,因为它是一个…

【论文阅读】PRIS: Practical robust invertible network for image steganography

内容简介 论文标题:PRIS: Practical robust invertible network for image steganography 作者:Hang Yang, Yitian Xu∗, Xuhua Liu∗, Xiaodong Ma∗ 发表时间:2024年4月11日 Engineering Applications of Artificial Intelligence 关键…

游戏引擎学习第42天

仓库: https://gitee.com/mrxiao_com/2d_game 简介 目前我们正在研究的内容是如何构建一个基本的游戏引擎。我们将深入了解游戏开发的每一个环节,从最基础的技术实现到高级的游戏编程。 角色移动代码 我们主要讨论的是角色的移动代码。我一直希望能够使用一些基…

wine的使用方法

wine版本 所有分支,新的主要版本: wine-x.0 All branches, release candidates:各分支、候选版本: wine-x.0-rcn Stable branch updates: 稳定分支更新: wine-x.0.z Development branch updates: wine-x.y wine *.exe “更改目…

Comparator.comparing 排序注意

1. 对数字型字符串排序 List<String> values new ArrayList<>();values.add("10");values.add("6");values.add("20");values.add("30");values.add("50");//方法1 &#xff08;正确的排序方法&#xff09;//倒…

springboot3整合javafx解决bean注入问题

springboot整合javafx时候&#xff0c;很多问题就在于controller没有被spring容器管理&#xff0c;无法注入bean&#xff0c;在这里提供一套自己的解决思路 执行逻辑 这里仅仅提供一个演示&#xff0c;我点击按钮之后&#xff0c;从service层返回一个文本并显示 项目结构 创…

【Linux】Nginx一个域名https一个地址配置多个项目【项目实战】

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;CSDN博客专家   &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01…

SQL中的函数介绍

大多数SQL实现支持以下类型 文本函数&#xff1a;用于处理文本字符串&#xff08;如删除或填充值&#xff0c;转换值为大写或小写&#xff09;。数值函数&#xff1a;用于在数值数据上进行算术操作&#xff08;如返回绝对值&#xff0c;进行代数运算&#xff09;。日期和时间函…