Java学习笔记---多态

news2024/10/1 21:30:52

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

多态的应用场景:根据传递对象的不同,调用不同的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关键字进行判断)

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

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

相关文章

Tomcat详解 一:tomcat的部署

文章目录 1. Tomcat的基本介绍1.1 Tomcat是什么1.2 Tomcat的构成组件1.2.1 Web容器1.2.2 Servlet容器1.2.3 JSP容器(JAVA Scripts page) 1.3 核心功能1.3.1 Container 结构分析 1.4 配置文件1.5 Tomcat常用端口号1.6 启动和关闭Tomcat 2. 部署Tomcat服务…

DockerCompose部署es和kibana

DockerCompose文件 version: 3.1 services:elasticsearch:image: elasticsearch:7.13.3container_name: elasticsearchprivileged: trueports:- "9200:9200"- "9300:9300"environment:- ES_JAVA_OPTS-Xms128m -Xmx1024m #设置使用jvm内存大小- cluster.na…

【unity3D】如何修改相机的默认视角

💗 未来的游戏开发程序媛,现在的努力学习菜鸡 💦本专栏是我关于游戏开发的学习笔记 🈶本篇是unity的如何修改相机的默认视角 如何修改相机的默认视角 Game窗口运行的话视角是这样的: 此时Scene窗口的视角是这样的&…

申请Tik Tok的菲律宾公会需要什么条件?

近年来的跨境电商出海各个国家,使得跨境电子商务在全球范围内迅猛发展。菲律宾作为东南亚地区的重要经济体之一,其电商市场也呈现出蓬勃的增长势头。本文将介绍菲律宾国内外电商的发展趋势,并分析目前菲律宾的市场团队佳薇cmxyci 神秘代码开启…

论文解读 | 点对照:3D点云理解无监督式预训练

原创 | 文 BFT机器人 《PointContrast: Unsupervised Pre-training for 3D Point Cloud Understanding》是一篇关于三维点云数据理解领域的研究论文,旨在提出一种无监督预训练方法,以改善对三维点云数据的理解。 01 背景 三维点云数据是从传感器&#…

手写Spring:第4章-基于Cglib实现含构造函数的类实例化策略

文章目录 一、目标:含构造函数的类实例化二、设计:含构造函数的类实例化三、实现:含构造函数的类实例化3.1 工程结构3.2 含构造函数的类实例化类图3.3 类实例化策略3.3.1 定义实例化策略接口3.3.2 JDK实例化3.3.3 Cglib实例化 3.4 抽象类定义…

INS惯性导航系统相关技术(概念版)

一、参考资料 组合导航系统生产商 applanix 官网 新手入门系列3——Allan方差分析方法的直观理解 惯性测量单元Allan方差分析详解 IMU标定之—Allan方差 b站视频:武汉大学惯性导航课程合集【2021年秋】 资料下载:PPT:《惯性导航原理与方法》…

nginx-ingress多控制器部署

nginx-ingress直接使用yaml来部署 wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.1/deploy/static/provider/cloud/deploy.yaml修改里面的镜像 多控制器部署实现: 在同一个命名空间中只需要新增一个IngressClass跟 ingress-…

EFG-02-10-31、ERBG-06-B-51电液比例控制调速阀放大器

EFCG-02-10-31、EFG-03-60-26、EFCG-03-125-26、EFCG-03-125-51、EFG-06-250-22、EFCG-06-250-22、EFG-06-250-51、EFCG-02-30-31、ERBG-06-B-51、ERBG-10-C-51、ERBG-06-H-51、ERBG-10-B-51、ERBG-06-C-51、ERBG-10-H-51、EFG-02-10-31、EFCG-03-60-26、EFG-03-125-26、EFG-03…

Mysql存储过程与存储函数

文章目录 1. 简介2. 存储过程的特点3. 存储过程操作语法4. 存储过程变量5. 其它语法6. 存储函数 1. 简介 存储过程是事先经过编译并存储在数据库中的一段SQL集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输&a…

生成式AI的JavScript技术栈

如果不使用新的软件基础设施技术,就很难理解它们。 至少,a16z 基础设施团队发现了这一点,而且因为我们中的许多人都是以程序员的身份开始职业生涯的,所以我们经常通过实践来学习。 尤其是生成式AI浪潮的情况尤其如此,它…

使用Blender 在影片剪辑上创建粘滞标签

推荐:使用 NSDT场景编辑器快速搭建3D应用场景 准备场景 步骤 1 在新文件中,右键单击默认立方体和灯光,然后按键盘上的 Del 将其删除。按住 Shift 键,然后右键单击以选择多个对象。 删除默认对象 步骤 2 选择摄像机并按 Alt-R …

问道管理:申购额度如何计算?

在投资领域,很多人会选择申购基金产品。对于大众投资者而言,申购额度是一个较为要害的问题。在此,我们将从多个角度进行剖析,具体解读申购额度怎么核算。 一、基金公司规则 首要,申购额度需要依照基金公司的规则来进行…

js 高精度计算 - decimal.js 库

what decimal.js ? decimal.js是一个用于进行精确数值计算的第三方库。通常情况下,当你需要进行对精度要求较高的数值计算时,可以考虑使用decimal.js或类似的库。 JavaScript中的原生Number类型使用双精度浮点数表示,对于某些计算…

torch.cuda.is_available() 解决方案

本人使用的显卡如下,打开任务管理器查看 Anaconda下载哪个版本都可以 使用命令conda create -n pytorch python3.6创建一个名为pytorch的环境,解释器使用3.6的 使用命令conda activate pytorch进入该环境 进入pytorch官网,选择下列选项 …

SPSS教程:手把手教你绘制簇状条形图

SPSS教程:手把手教你绘制簇状条形图 1、问题与数据 某研究者拟分析受教育程度和性别对幸福指数的影响程度,招募了58位研究对象,包括28位男性和30位女性。每一类性别中,研究对象的受教育程度均分为3类(高中及以下、大…

Spring原生api操作之如何在spring配置文件添加Bean对象到Spring容器

一、创建一个spring项目 为了使用Spring的原生api,首先要创建一个只基于Spring的项目. 创建maven项目引入spring依赖(不要使用6版本以上的,6的最低兼容jdk为jdk17)创建spring配置文件 这个配置文件的名称固定,但是必须…

935. 骑士拨号器

935. 骑士拨号器 原题链接:完成情况:解题思路:参考代码: 原题链接: 935. 骑士拨号器 https://leetcode.cn/problems/knight-dialer/description/ 完成情况: 解题思路: 题目要求:键…

网络技术二十:OSPF

OSPF RIP的缺陷 最大跳数限制了网络规模 以跳数为度量值无法准确判断最优路径 路由更新发送完整路由表消耗网络带宽 收敛速度慢 协议会产生路由自环 定义 开放式最短路径优先,基于链路状态特征 工作在IP层,协议号89 OSPF初始化流程 1.建立邻居和邻…

实现无公网IP的公网环境下Windows远程桌面Ubuntu 18.04连接,高效远程办公!

文章目录 一、 同个局域网内远程桌面Ubuntu1. 更新软件仓库2. 安装支持包3. 安装XFCE4桌面环境4. 安装XRDP5. 环境设置5.1 XFCE桌面配置5.2 在配置文件中,加入XFCE会话 6 重启服务7. 查看IP地址8. 使用Windows远程桌面连接 二、公网环境系统远程桌面Ubuntu1. 注册cp…