当前位置: 首页 > news >正文

Java学习笔记---多态

面向对象三大特征之一(继承,封装,多态)

多态的应用场景:根据传递对象的不同,调用不同的show方法

一、多态的定义

同类型的对象,表现出的不同形态(对象的多种形态)

二、多态的表现形式

父类类型  对象名称=子类对象

三、多态的前提

  • 有继承/实现关系
  • 有父类引用指向子类对象
  • 有方法重写

 四、多态的好处

使用父类类型作为参数,可以接受所有子类对象,体现多态的扩展性与便利

五、多态调用成员的特点

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

 注:

1.编译看左边:Javac编译的时候,会看左边的父类中有没有这个变量(方法),如果有编译成功,没有则编译失败。

2.运行也看左边:Java运行代码的时候,实际获取的就是左边父类中成员变量的值

3.运行看右边:Java运行代码时,实际上运行的是子类的方法

六、多态的优势

  • 在多态形势下,右边对象可以实现解耦合,便于扩展和维护(注:解耦合是指两个或者两个以上的体系或者两种运动形式间通过互相作用而彼此影响以致联合起来的现象)
  • 定义方法时,使用父类型作为参数,可以接收所有子类对象,体现多态的扩展性与便利

七、多态的弊端

  • 不能调用子类的特有功能(原因:当调用成员方法时,编译看左边,运行看右边,那么在编译的时候会先检查左边的父类中有没有这个方法,如果没有则直接报错)
  • 解决方案:变回子类类型  Dog  d=(Dog)a;

 扩展:instanceof关键字(作用:判断该变量是否为该类型)

格式:变量名  instanceof   类名 

新特性

先判断a是否为Dog类型,如果是,则强转成Dog类型,转换之后变量名为d,如果不是,则不强转,结果直接是false

引用数据类型的类型转换的两种方法

自动类型转换(由小变大:Person p=new Student();)

强制类型转换(父类强制变为子类Student s=(Student)p;)

强制转换的作用:

可以转换成真正的子类类型,从而调用子类独有功能

(注:转换类型与真实对象类型不一致会报错,可以用instanceof关键字进行判断)

相关文章:

Java学习笔记---多态

面向对象三大特征之一(继承,封装,多态) 多态的应用场景:根据传递对象的不同,调用不同的show方法 一、多态的定义 同类型的对象,表现出的不同形态(对象的多种形态) 二…...

2023-09-10 LeetCode每日一题(课程表 II)

2023-09-10每日一题 一、题目编号 210. 课程表 II二、题目链接 点击跳转到题目位置 三、题目描述 现在你总共有 numCourses 门课需要选,记为 0 到 numCourses - 1。给你一个数组 prerequisites ,其中 prerequisites[i] [ai, bi] ,表示在…...

合并区间【贪心算法】

合并区间 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 class Solution {public int[][] merge(int[…...

2023,软件测试人的未来在哪里?

2023年,IT行业出现空前的萧条,首先是年初一开始各大厂像着了魔似的不约而同的纷纷裁员、降薪、奖金包缩水,随之而来的是需求萎缩,HC减少或封锁等等。 而有幸未被列入裁员名单的在职人员,庆幸之余也心有余悸&#xff0…...

Python中的Numpy向量计算(R与Python系列第三篇)

目录 一、什么是Numpy? 二、如何导入NumPy? 三、生成NumPy数组 3.1利用序列生成 3.2使用特定函数生成NumPy数组 (1)使用np.arange() (2)使用np.linspace() 四、NumPy数组的其他常用函数 (1)np.z…...

LeetCode刷题笔记【27】:贪心算法专题-5(无重叠区间、划分字母区间、合并区间)

文章目录 前置知识435. 无重叠区间题目描述参考<452. 用最少数量的箭引爆气球>, 间接求解直接求"重叠区间数量" 763.划分字母区间题目描述贪心 - 建立"最后一个当前字母"数组优化marker创建的过程 56. 合并区间题目描述解题思路代码① 如果有重合就合…...

nvidia-smi 命令详解

nvidia-smi 命令详解 1. nvidia-smi 面板解析2. 显存与GPU的区别 Reference: nvidia-smi命令详解 相关文章&#xff1a; nvidia-smi nvcc -V 及 CUDA、cuDNN 安装 nvidia-smi(NVIDIA System Management Interface) 是一种命令行实用程序&#xff0c;用于监控和管理 NVIDIA G…...

fork()函数的返回值

在程序中&#xff0c;int pd fork() 是一个典型的 fork() 调用。fork() 函数会创建一个新的进程&#xff0c;然后在父进程中返回子进程的进程ID&#xff08;PID&#xff09;&#xff0c;在子进程中返回0。所以 pd 的值会根据当前进程是父进程还是子进程而有所不同&#xff1a;…...

Stable Diffusion WebUI挂VPN不能跑图解决办法(Windows)

如何解决SD在打开VPN的状态不能运行的问题 在我们开VPN的时候会出现无法生成图片&#xff0c;也无法做其他任何事&#xff0c;这个时候是不是很着急呢&#xff1f; 别急&#xff0c;我这里会说明如何解决。 就像这样&#xff0c;运行半天生成不了图&#xff0c;有时还会出现…...

Android的本地数据

何为本地&#xff0c;即写完之后除非手动修改&#xff0c;否像嘎了一样在那固定死了 有些需求可能也会要求我们去写死数据&#xff0c;因为这需求是一成不变的&#xff0c;那么你通常会用什么方法写死呢&#xff1f; 1. 本地存储-SharedPreferences 此方法可以长时间保存于手…...

android NDK 开发包,网盘下载,不限速

记录下ndk 开发包的地址&#xff0c;分享给大家。 另外有Android studio的下载包&#xff0c; 在另一篇文章 链接&#xff1a;http://t.csdn.cn/JSr9x Android Studio.exe 下载 2023 最新更新&#xff0c;网盘下载_hsj-obj的博客-CSDN博客 主要是19-25&#xff0c;其他的没有…...

【每日一题Day320】LC2651计算列车到站时间 | 数学

计算列车到站时间【LC2651】](https://leetcode.cn/problems/calculate-delayed-arrival-time/) 给你一个正整数 arrivalTime 表示列车正点到站的时间&#xff08;单位&#xff1a;小时&#xff09;&#xff0c;另给你一个正整数 delayedTime 表示列车延误的小时数。 返回列车实…...

C语言柔性数组详解:让你的程序更灵活

柔性数组 一、前言二、柔性数组的用法三、柔性数组的内存分布四、柔性数组的优势五、总结 一、前言 仔细观察下面的代码&#xff0c;有没有看出哪里不对劲&#xff1f; struct S {int i;double d;char c;int arr[]; };还有另外一种写法&#xff1a; struct S {int i;double …...

Redis-带你深入学习数据类型list

目录 1、list列表 2、list相关命令 2.1、添加相关命令&#xff1a;rpush、lpush、linsert 2.2、查找相关命令&#xff1a;lrange、lindex、llen 2.3、删除相关命令&#xff1a;lpop、rpop、lrem、ltrim 2.4、修改相关命令&#xff1a;lset 2.5、阻塞相关命令&#xff1a…...

react拖拽依赖库react-dnd

注&#xff1a;对于表格自定义行可以拖拽和树自定义节点可以拖拽等比较适用&#xff0c;其余的拖拽处理可以使用dragstart&#xff0c;drop等js原生事件来实现 react-dnd使用方法很简单&#xff0c;直接上干货 第一步安装依赖并引入 import { DndProvider } from react-dnd;…...

win10环境安装使用docker-maxwell

目的&#xff1a;maxwell可以监控mysql数据变化&#xff0c;并同步到kafka、mq或tcp等。 maxwell和canal区别&#xff1a; maxwell更轻量&#xff0c;canal把表结构也输出了 docker bootstrap可导出历史数据&#xff0c;canal不能 环境 &#xff1a;win10&#xff0c;mysql5…...

Docker部署RabbitMQ

Docker部署RabbitMQ 介绍 RabbitMQ是一个开源的消息队列系统&#xff0c;它被设计用于在应用程序之间传递消息。它采用了AMQP&#xff08;高级消息队列协议&#xff09;作为底层通信协议&#xff0c;这使得它能够在不同的应用程序之间进行可靠的消息传递。 那么&#xff0c;…...

23个react常见问题

1、setState 是异步还是同步&#xff1f; 合成事件中是异步 钩子函数中的是异步 原生事件中是同步 setTimeout中是同步 相关链接&#xff1a;你真的理解setState吗&#xff1f;&#xff1a; 2、聊聊 react16.4 的生命周期 图片 相关连接&#xff1a;React 生命周期 我对 Reac…...

【python基础】——Anaconda下包更新的坑及安装与卸载、及安装后Jupyter Notebook没反应的解决方法

文章目录 前言一、起因:如何一步步走到卸载重装anaconda?二、卸载anaconda二、重新安装anaconda三、关于安装Anaconda后,打开Jupyter Notebook运行代码没反应且in[ ]没有*前言 本文主要用来记录自己近期踩坑的一些复盘。其中坑有: ‘.supxlabel’ 不起作用的解决pip list 与…...

CSS 中的 display 和 visibility

CSS 中的 display 和 visibility 都可以设置一个元素在浏览器中的显示或隐藏效果。 display: 隐藏某个元素时&#xff0c;不会占用任何空间。换句话讲&#xff0c;不会影响布局。visibility: 隐藏某个元素时&#xff0c;仍需占用与未隐藏之前一样的空间。换句话讲&#xff0c;…...

AI代码工程化实战:从生成到部署的确定性框架

1. 项目概述&#xff1a;从“AI画饼”到“AI交付”的工程化桥梁如果你和我一样&#xff0c;在过去一年里深度使用过 Claude Code、Cursor 或者 GitHub Copilot&#xff0c;那你一定经历过这种场景&#xff1a;AI 助手噼里啪啦生成了一大堆看起来非常酷炫的代码&#xff0c;你兴…...

【Midjourney Tempera风格终极指南】:20年AI绘画专家亲授3大参数黄金配比与5类易踩翻车点

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Tempera风格的本质解构与历史溯源 Tempera&#xff08;蛋彩画&#xff09;作为一种古老而精密的绘画媒介&#xff0c;其技术逻辑与现代前端渲染范式存在深层隐喻关联——尤其在“分层合成”“介质绑定”…...

Multi-Agent 智能办公场景落地:财务、法务、人力的自动协作链路

Multi-Agent 智能办公场景落地:财务、法务、人力的自动协作链路 关键词 Multi-Agent 协作、业财法税一体化、智能办公自动化、大模型Agent编排、跨域规则引擎、RPA增强架构、企业数字员工 摘要 当前中大型企业普遍存在跨部门协作摩擦成本高、规则执行不一致、合规风险不可…...

我让 AI 学会了“拆“App——Antigravity 逆向分析能力搭建手记

你能想象吗&#xff1f;对着 AI 说一句"帮我分析这个 APK"&#xff0c;它就自己打开 IDA、拆解代码、Hook 运行时、提取密钥、还原源码……全程不用你碰一下鼠标。先说结论我给 AI 编程助手 Antigravity 装上了 4 把"瑞士军刀"&#xff0c;让它从一个只会写…...

AIKit:基于容器的一站式开源大语言模型部署与微调平台

1. AIKit项目概述&#xff1a;一站式开源大语言模型部署与微调平台 如果你和我一样&#xff0c;在尝试将Llama、Mistral这类开源大语言模型&#xff08;LLM&#xff09;真正用起来时&#xff0c;被复杂的依赖、环境配置和性能优化搞得焦头烂额&#xff0c;那么AIKit的出现&…...

【数字孪生实战案例】怎样设置数据筛选条件,精准控制电子地图飞线的呈现效果?~山海鲸可视化

在数据可视化大屏应用里&#xff0c;电子地图飞线是展示跨地域关联数据的重要载体。当飞线数据量大、维度繁杂时&#xff0c;通过配置数据条件对地图飞线做精准筛选&#xff0c;能够过滤冗余信息、聚焦核心数据&#xff0c;让地图呈现更简洁直观&#xff0c;有效提升整体可视化…...

别再死记硬背Paxos了!用“希腊城邦法案”的故事,5分钟搞懂分布式共识核心

从古希腊议会到区块链&#xff1a;用人类文明史解锁分布式共识的本质 想象一下公元前5世纪的雅典城邦&#xff0c;五百人议会正在为是否建造新战舰争论不休。议员们需要达成一致&#xff0c;但有人中途离席、有人突然反对、甚至传令官可能送错消息——这像极了今天分布式系统中…...

AirMapView自定义地图类型开发:扩展新的地图提供商完整指南 [特殊字符]️

AirMapView自定义地图类型开发&#xff1a;扩展新的地图提供商完整指南 &#x1f5fa;️ 【免费下载链接】AirMapView A view abstraction to provide a map user interface with various underlying map providers 项目地址: https://gitcode.com/gh_mirrors/ai/AirMapView …...

5G O-RAN中AI驱动的延迟预测系统设计与优化

1. 项目背景与核心价值在5G O-RAN架构中&#xff0c;延迟控制一直是网络优化的核心痛点。传统电信设备厂商采用的黑盒方案&#xff0c;使得运营商难以针对特定场景进行精细化调优。而O-RAN的开放特性虽然带来了灵活性&#xff0c;但也引入了新的挑战——当CU&#xff08;集中单…...

Ante语言:精化类型与生命周期推断在系统编程中的实践探索

1. 项目概述&#xff1a;Ante&#xff0c;一个探索系统编程新范式的语言 最近在关注系统级编程语言的发展&#xff0c;发现了一个很有意思的项目&#xff1a;Ante。这并非一个成熟的生产级工具&#xff0c;而更像是一个充满野心的“实验室”。它的核心目标&#xff0c;是尝试将…...