7.0、Java继承与多态 - 多态的特性
7.0、Java继承与多态 - 多态的特性
面向对象的三大特征:封装性、继承性、多态性;
extends继承 或者 implements实现,是多态性的前提;

用学生类创建一个对象 - 小明,他是一个 学生(学生形态),但同时也是一个 人(人类形态)
小明是一个对象;这个对象既有 学生形态 也有 人类形态,一个对象拥有多种形态,这就是对象的多态性
代码中体现多态性,其实就是一句话 -> 父类引用指向子类对象;下面用代码给大家示范一下:
创建 People.java 类,如下所示 ->
public class People {int num = 6;public void eat() {System.out.println("人类吃饭");}
}
创建 Students.java 类,并让其继承 People 类,然后重写 eat() 方法,如下所示->
public class Students extends People {int num = 9;@Overridepublic void eat() {System.out.println("学生吃饭");}
}
创建 Main.java 类,如下所示 ->
public class Main {public static void main(String[] args) {//使用多态的写法//左侧父类的引用,指向了右侧子类的对象People people = new Students();people.eat();//这里调用成员方法,看等号右边是谁就有先调用谁System.out.println(people.num);//这里调用成员变量,看等号左边是谁就有先调用谁,所以输出的是 6}
}
People people = new Students;people.eat(); -> 这里显然会调用 Students 中的 eat() 方法;因为 new 出来的是 Students 对象( 就是调用成员方法时 等号右边是谁就优先调用谁的方法 );
而下面的 System.out.println(people.num);调用的是成员变量,那么看的就是 等号左边 是谁就优先调用谁,显然调用的是 People 中的 num = 6;
当我们通过成员方法去访问成员变量时,访问的该成员方法属于哪个类,访问的成员变量就是哪个类的;
在访问 成员方法 的时候有一个口诀:编译看左边,运行看右边 -> 具体情况看下面代码实例:
创建父类 Fu.java 文件,如下所示 ->
public class Fu {public void eat() {System.out.println("父类吃东西");}public void fuMethod() {System.out.println("执行fuMethod方法");}
}
创建 Zi.java 文件,并让其继承 Fu 类,如下所示 ->
public class Zi extends Fu{@Overridepublic void eat() {System.out.println("子类吃东西");}public void ziMethod() {System.out.println("执行ziMethod方法");}
}
创建 Main.java 文件,如下所示 ->
public class Main {public static void main(String[] args) {Fu fu = new Zi();fu.eat();//编译通过在Fu类中有eat()方法但是运行时看右边Zi类,所以执行的是Zi类中的eat()方法fu.fuMethod();//编译通过在Fu类中有fuMethod()方法但是运行时看右边Zi类,但是Zi类中没有fuMethod()方法,所以向上找到父类中的fuMethod()方法执行fu.ziMethod();//编译不通过,左边是Fu 但是在Fu类中并没有ziMethod()这个方法所以编译不通过}
}
fu.eat();
编译通过在 Fu 类中有 eat() 方法但是运行时看右边 Zi 类,所以执行的是 Zi 类中的 eat() 方法;
fu.fuMethod();
编译通过在 Fu 类中有 fuMethod() 方法但是运行时看右边 Zi 类,但是 Zi 类中没有 fuMethod() 方法,所以向上找到父类中的 fuMethod() 方法执行;
fu.ziMethod();
编译不通过,左边是 Fu 但是在 Fu 类中并没有 ziMethod() 这个方法所以编译不通过;
注意一下:
该口诀针对的是 成员方法;不是 成员变量,访问 成员变量 的时候 [ 编译看左边,运行看右边 ] 的口诀不适用;访问成员变量的时候口诀应该变成是 -> [ 编译看左边,运行还是看左边 ];
那么多态在代码中的运用到底有什么作用呢?
下面给大家稍作解释 ->

相关文章:
7.0、Java继承与多态 - 多态的特性
7.0、Java继承与多态 - 多态的特性 面向对象的三大特征:封装性、继承性、多态性; extends继承 或者 implements实现,是多态性的前提; 用学生类创建一个对象 - 小明,他是一个 学生(学生形态)&…...
将系统从机械硬盘迁移至固态硬盘上
1、使用DiskGenius软件、分区助手或者傲梅分区助手进行系统迁移 参考: 系统迁移 - DiskGenius 分区助手专业版如何迁移系统到固态硬盘-迁移系统到固态硬盘的方法_华军软件园 (onlinedown.net) 无需重装,轻松将系统迁移到固态硬盘! (disktool.cn) 注…...
《Netty》从零开始学netty源码(五十一)之PoolArena的内存释放与扩容
目录 释放空间free()destroyChunk()freeChunk() 扩容reallocate()memoryCopy() 释放空间free() 当chunk使用完毕后需要释放,如果是池化chunk则需要放回池中供下次循环利用,如果是非池化的则直接释放对应的物理空间。 下面继续分析释放具体物理空间的des…...
Android Input系统事件分发分析
“本文基于Android13源码,分析Input系统中,事件分发的实现原理“ 整个事件分发到事件的确认过程很长,如果读者只是想大概了解一下,可以直接看末尾总结部分的流程图。 1. 前言 在文章之前,有必要提一下InputReader。其…...
Linux-基本指令2
文章目录 touch(新建一个文件)whoami(查看当前用户名)概念:1.你是如何看待指令的?2.我们在执行指令之前,我们应该先做什么? 概念:/tree . (树状显示文件夹和文件)rmdir && rmrmdirrm ctrl c通配符…...
辨析 项目范围核查、WBS核查
项目范围核查、WBS核查辨析 项目范围核查 项目目标是否完善和准确指标是否可靠和有效约束和限制条件是否真实和符合实际重要假设前提是否合理风险是否可以接受成功把握是否很大范围定义是否能够保证上述目标的实现范围能够给出的效益是否高于成本范围定义是否需要进一步进行辅…...
跳跃游戏类题目 总结篇
一.跳跃游戏类题目简单介绍 跳跃游戏是一种典型的算法题目,经常是给定一数组arr,从数组的某一位置i出发,根据一定的跳跃规则,比如从i位置能跳arr[i]步,或者小于arr[i]步,或者固定步数,直到到达某…...
Ubuntu20.04 交叉编译Paddle-OCR
第一步:交叉编译Paddle-Lite 参考链接:https://blog.csdn.net/sz76211822/article/details/130466597?spm1001.2014.3001.5501 第二步:交叉编译opencv4.x 参考链接:https://blog.csdn.net/sz76211822/article/details/13046168…...
Java 基础进阶篇(四)—— 权限修饰符、final 关键字与枚举
文章目录 一、权限修饰符二、final 关键字2.1 final 作用2.2 final 修饰变量举例2.3 常量 三、枚举3.1 枚举的格式3.2 枚举的特征3.3 枚举的应用 一、权限修饰符 权限修饰符 用于约束成员变量、构造器、方法等的访问范围。 权限修饰符: 有四种作用范围由小到大 (p…...
Linux命令集(Linux文件管理命令--touch指令篇)
Linux命令集(Linux文件管理命令--touch指令篇) Linux文件管理命令集(touch指令篇)6. touch(touch)1. 创建名为 file1 的空文件2. 创建名为 file1 和名为 file2 的多个文件3. 创建名为 file1 的文件并将访问时间设置为特定日期4. 创…...
软件工程学习教程大纲
软件工程学习教程大纲 第一章:软件工程概述 1.1 软件工程的定义和作用 软件工程的发展历程和趋势 软件工程的应用领域和特点 1.2 软件开发生命周期 软件开发生命周期的定义和阶段 软件开发生命周期的模型和方法 1.3 软件工程方法和工具 软件工程方法和工具…...
使用ChatGPT生成了十种排序算法
前言 当前ChatGPT非常火爆,对于程序员来说,ChatGPT可以帮助编写很多有用的代码。比如:在算法的实现上,就可以替我们省很多事。所以,小试牛刀一下,看看ChatGPT生成了排序算法怎么样? 简介 排序…...
GEE:MODIS计算遥感指数(NDVI、BSI、NDSI、EVI、LSWI、SIPI、EBI等)
作者:_养乐多_ 本文将介绍如何使用Google Earth Engine(GEE)进行遥感影像分析,具体地,使用MODIS数据集计算和可视化几种植被指数,以评估植被生长的状况,或者作为随机森林分类器训练需要的特征变量。 主要包括,NDVI、BSI、NDSI、EVI、LSWI、SIPI、EBI等。 NDVI(Normal…...
《*** 法治思想学习纲要》学习辅导
《*** 法治思想学习纲要》学习辅导 总分:100 及格分数:60 考试剩余时间: 1时 59分 35秒 单选题(共7题,每题5分) 1、全面依法治国中的“关键少数”是()。 正确答案:C、领导…...
初识Go语言18-面向对象【面向对象的概念、构造函数、继承与重写 泛型】
文章目录 面向对象面向对象的概念构造函数继承与重写泛型 面向对象 面向对象的概念 洗衣服过程剖析: 给洗衣机里加脏衣服和洗衣粉。启动洗衣机。洗衣机自动注水,然后滚动。脏衣服从黑颜色变成白颜色。洗衣机自动停止。 用面向过程的思想实现代码。 //…...
4.微服务项目实战---Sentinel--服务容错
4.1 高并发带来的问题 在微服务架构中,我们将业务拆分成一个个的服务,服务与服务之间可以相互调用,但是由于网络 原因或者自身的原因,服务并不能保证服务的 100% 可用,如果单个服务出现问题,调用这个服务…...
Postgres SELECT INSERT 流程 ?
SELECT 当执行SELECT查询时,PostgreSQL数据库会按照以下流程进行处理: 首先,查询语句会被发送到服务器。 服务器会接收查询请求,并根据查询条件从表中读取数据。 数据库会将数据存储在磁盘上的数据文件中,然后将其读…...
OpenAI推企业版ChatGPT,英伟达造AI安全卫士
GPT现在已经进入了淘金时代。虽然全球涌现出成千上万的大模型或ChatGPT变种,但一直能挣钱的人往往是卖铲子的人。 这不,围绕暴风眼中的大模型,已经有不少企业,开始研究起了大模型的“铲子”产品,而且开源和付费两不误…...
【原创】运维的终点是开发~chatGPT告诉你真相
文章目录 软件技术岗位鄙视链,你在哪层呢?让chatGPT告诉你运维工作好,还是开发工作好问它几个问题来自你的消息: 一个三年开发成长的案例和薪资来自ChatAI的消息:来自你的消息: 一个三年运维成长的案例和薪资来自ChatAI的消息:来自你的消息: …...
SSH 服务器、NFS 服务器、TFTP 服务器详解及测试
文章目录 前言一、SSH 服务器1、SSH 能做什么?2、安装 SSH 服务器3、测试 SSH 服务4、用 SecureCRT 测试 二、NFS 服务器1、NFS 能做什么?2、安装 NFS 软件包3、添加 NFS 共享目录4、启动 NFS 服务5、测试 NFS 服务器 三、TFTP 服务器1、TFTP 能做什么&a…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...
《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》
在注意力分散、内容高度同质化的时代,情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现,消费者对内容的“有感”程度,正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中࿰…...
C++.OpenGL (10/64)基础光照(Basic Lighting)
基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...
听写流程自动化实践,轻量级教育辅助
随着智能教育工具的发展,越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式,也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建,…...
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
基于IDIG-GAN的小样本电机轴承故障诊断
目录 🔍 核心问题 一、IDIG-GAN模型原理 1. 整体架构 2. 核心创新点 (1) 梯度归一化(Gradient Normalization) (2) 判别器梯度间隙正则化(Discriminator Gradient Gap Regularization) (3) 自注意力机制(Self-Attention) 3. 完整损失函数 二…...
