Java学习笔记--多态:多态的介绍,多态的基本使用,多态的条件下成员的访问特点,多态的好处
目录
1.多态的介绍
2.多态的基本使用
编辑
3.多态的条件下成员的访问特点
3.1成员变量
3.2成员方法
4.多态的好处(为什么学多态)
1.问题描述:
2.多态方式和原始方式new对象的优缺点:
一.多态的介绍
1.前提:a.必须有子父类继承或者接口实现关系b.必须有方法的重写(没有重写,多态没有意义),多态主要玩儿的是重写方法c.new对象:父类引用指向子类对象Fu fu = new Zi() -> 理解为大类型接收了一个小类型的数据 ->比如 double b = 10
2.注意:多态下不能直接调用子类特有功能
二.多态的基本使用
用动物类举例
public abstract class Animal {public abstract void eat();
}
public class Dog extends Animal{@Overridepublic void eat() {System.out.println("狗啃骨头");}//特有方法public void lookDoor(){System.out.println("狗会看门");}
}
public class Cat extends Animal{@Overridepublic void eat() {System.out.println("猫吃鱼");}//特有方法public void catchMouse(){System.out.println("猫会捉老鼠");}
}
public class Test01 {public static void main(String[] args) {//原始方式Dog dog = new Dog();dog.eat();//重写的dog.lookDoor();//特有的Cat cat = new Cat();cat.eat();//重写的cat.catchMouse();//特有的System.out.println("==================");//多态形式new对象Animal animal = new Dog();//相当于double b = 10animal.eat();//重写的 animal接收的是dog对象,所以调用的是dog中的eat
// animal.lookDoor(); 多态前提下,不能直接调用子类特有成员Animal animal1 = new Cat();animal1.eat();//cat重写的}
}
三.多态的条件下成员的访问特点
3.1成员变量
public class Fu {int num = 1000;
}
public class Zi extends Fu{int num = 100;
}
public class Test01 {public static void main(String[] args) {Fu fu = new Zi();System.out.println(fu.num);}
}
看等号左边是谁,先调用谁中的成员变量
3.2成员方法
public class Fu {int num = 1000;public void method(){System.out.println("我是父类中的method方法");}
}
public class Zi extends Fu{int num = 100;public void method(){System.out.println("我是子类中的method方法");}
}
public class Test01 {public static void main(String[] args) {Fu fu = new Zi();System.out.println(fu.num);//父类中的numfu.method();//子类中重写的method方法}
}
看new的是谁,先调用谁中的成员方法,子类没有,找父类
四.多态的好处(为什么学多态)
1.问题描述:
如果使用原始方式new对象(等号左右两边一样),既能调用重写的,还能调用继承的,还能调用自己特有的成员
但是多态方式new对象,只能调用重写的,不能直接调用子类特有的成员,那为啥还要用多态呢?
2.多态方式和原始方式new对象的优缺点:
原始方式:
a.优点:既能调用重写的,还能调用父类非私有的,还能调用自己特有的
b.缺点:扩展性差,不能同时接受多个子类类型,需要重写,这就意味着需要不断的创建对应子类方法
多态方式:
a.优点:扩展性强,比如,接受不同子类类型
Fu fu = new Zi()
double b = 10;
b = 100L;
b.缺点:不能直接调用子类特有功能
public abstract class Animal {public abstract void eat();
}
public class Dog extends Animal {@Overridepublic void eat() {System.out.println("狗啃骨头");}//特有方法public void lookDoor(){System.out.println("狗会看门");}
}
public class Cat extends Animal {@Overridepublic void eat() {System.out.println("猫吃鱼");}//特有方法public void catchMouse(){System.out.println("猫会捉老鼠");}
}
public class Test01 {public static void main(String[] args) {Dog dog = new Dog();dog.eat();//重写的dog.lookDoor();//特有的//dog = new Cat();System.out.println("=============");method(dog);Cat cat = new Cat();method(cat);/* houzi houzi = new houzi();method(houzi);bird bird = new bird();method(bird);*/}public static void method(Dog dog){dog.eat();dog.lookDoor();}public static void method(Cat cat){cat.eat();cat.catchMouse();}/* public static void method(houzi houzi){cat.eat();cat.catchMouse();}*/
}
public class Test02 {public static void main(String[] args) {/*double b = 10;b = 100L;*/Animal animal = new Dog();animal.eat();animal = new Cat();animal.eat();System.out.println("=================");Dog dog = new Dog();method(dog);Cat cat = new Cat();method(cat);}/*形参传递父类类型,调用此方法父类类型可以接收任意它的子类对象传递哪个子类对象,就指向哪个子类对象,就调用哪个子类对象重写的方法*/public static void method(Animal animal){//Animal animal = dog Animal animal = catanimal.eat();}
}
形参传递父类类型,调用此方法父类类型可以接收任意它的子类对象 传递哪个子类对象,就指向哪个子类对象,就调用哪个子类对象重写的方法
相关文章:
Java学习笔记--多态:多态的介绍,多态的基本使用,多态的条件下成员的访问特点,多态的好处
目录 1.多态的介绍 2.多态的基本使用 编辑 3.多态的条件下成员的访问特点 3.1成员变量 3.2成员方法 4.多态的好处(为什么学多态) 1.问题描述: 2.多态方式和原始方式new对象的优缺点: 一.多态的介绍 1.前提:a.必须有子父类继承或者接口实现关系b.必须有方法的重写(没…...
使用Python设置Excel单元格边框
在数据驱动的业务场景中,自动化设置Excel单元格边框成为提升数据处理效率的关键环节。通过程序化控制边框样式,不仅能确保海量报表格式的统一性,还能通过粗细、虚实等视觉元素强化数据逻辑层次。当面对动态更新的分析报告时,代码驱…...
ES中常用的Query和查询作用,以及SpringBoot使用实例
ES中常用的Query和查询作用,以及 SpringBoot 使用实例 文章目录 ES中常用的Query和查询作用,以及 SpringBoot 使用实例MatchAllQueryTermQueryBoolQueryRangeQueryMatchQueryMultiMatchQueryTermsQueryPrefixQueryWildcardQueryRegexpQueryFuzzyQueryDis…...
美信监控易告警:功能强大
美信监控易是一款功能强大的运维管理软件,其告警功能在保障系统稳定运行方面发挥着重要作用。 一、运维行业背景 随着信息技术的快速发展,企业的信息化程度越来越高,对 IT 系统的依赖也日益增强。IT 系统的稳定运行直接关系到企业的业务正常…...
字符串系列一>最长回文子串
目录 题目:解析:代码: 题目: 链接: link 解析: 代码: class Solution {public String longestPalindrome(String s) {char[] ss s.toCharArray();int n ss.length;int begin 0;//返回结果的起始字符串…...
CAPL编程系列_02
1_CAPL 中的运算符 在CAPL(CANoe/CANalyzer Programming Language)中,运算符用于执行各种运算操作,类似于其他编程语言。CAPL中的运算符可以分为以下几类: 1. 算术运算符 算术运算符 加法运算符 - 减法运算符*乘法运…...
AI Agents系列之构建多智能体系统
🧠 向所有学习者致敬! “学习不是装满一桶水,而是点燃一把火。” —— 叶芝 我的博客主页: https://lizheng.blog.csdn.net 🌐 欢迎点击加入AI人工智能社区! 🚀 让我们一起努力,共创…...
FPGA学习——DE2-115开发板上设计波形发生器
1. 实验目的 掌握直接数字频率合成(DDS)技术的基本原理和应用。使用DE2-115开发板实现正弦波和方波的生成。使用SignalTap II嵌入式逻辑分析仪测试输出波形的离散数据。 2. 实验原理 DDS技术:通过相位累加器生成相位信息,结合波…...
51单片机实验二:数码管静态显示
目录 一、实验环境与实验器材 二、实验内容及实验步骤 1.单个数码管显示 2.六个数码管依次从0~F变换显示 3.proteus仿真 一、实验环境与实验器材 环境:Keli,STC-ISP烧写软件,Proteus. 器材:TX-1C单片机(STC89C52RC…...
JavaScript性能优化实战指南
1. 引言 JavaScript作为现代Web开发的核心技术,为网页带来了丰富的交互性和动态功能。然而,随着Web应用日益复杂,JavaScript代码的性能成为影响用户体验的关键因素。性能不佳的JavaScript可能导致页面加载缓慢、交互卡顿、甚至浏览器无响应&…...
POSIX 信号量(Semaphore)
一、POSIX 信号量基础 1. 什么是信号量? 信号量 是一种同步机制,用于控制对共享资源的访问。它通过一个整数值表示可用资源的数量,支持两种原子操作: P操作(Wait):尝试减少信号量值࿰…...
深度学习驱动下的字符识别:挑战与创新
一、引言 1.1 研究背景 深度学习在字符识别领域具有至关重要的地位。随着信息技术的飞速发展,对字符识别的准确性和效率要求越来越高。字符识别作为计算机视觉领域的一个重要研究方向,其主要目的是将各种形式的字符转换成计算机可识别的文本信息。近年…...
DOM TreeWalker API 详解
DOM TreeWalker API 详解 TreeWalker API 是 DOM 中一个强大但相对较少使用的功能,它提供了一种有效遍历文档树的方式。它比手动递归或使用简单的节点导航方法更加灵活和高效。 TreeWalker 基本概念 TreeWalker 对象可以让你按照指定的过滤条件,以特定…...
深度学习| Deep Snake环境配置+训练+预测评估(超全面)
前言:Deep Snake是一个比较经典结合了轮廓的深度学习分割方法,但是去实际运行Deep Snake项目的时候遇到了很多问题。这篇文章把Deep Snake从环境配置、训练到预测评估,都做了详细的教程,还补充了一些相关的知识点。 Deep Snake配置和运行 Deep Snake信息数据集COCOMask-&g…...
NHANES指标推荐:CMI
文章题目:Association between cardiometabolic index and biological ageing among adults: a population-based study DOI:10.1186/s12889-025-22053-3 中文标题:成年人心脏代谢指数与生物衰老之间的关系:一项基于人群的研究 发…...
非比较排序——计数排序
计数排序 计数排序是非比较排序 void CountSort(int *a,int n) {//找范围int mina[0],maxa[0];for(int i0;i<n;i){if(a[i]<min){mina[i];}if(a[i]>max){mina[i];}}int rangemax-min1;//创建计数用的数组int *count(int *) malloc(range* sizeof(int));//计数数组的元…...
spring cloud gateway前面是否必须要有个nginx
在 **"客户端 → Nginx (前置限流) → Spring Cloud Gateway → 微服务(Sentinel 熔断限流)"** 的架构中,**Spring Cloud Gateway 前面并不强制要求必须有 Nginx**,是否需要取决于具体场景。以下是详细分析: 一、必须使用 Nginx 的…...
复现SCI图像增强(Toward fast, flexible, and robust low-light image enhancement.)
运行train.py报错 > File "/home/uriky/桌面/SCI-main/SCI-main/train.py", line 105, in main > train_queue torch.utils.data.DataLoader( File "/home/uriky/anaconda3/envs/AA/lib/python3.8/site-packages/torch/utils/data/dataloader.py&q…...
Linux 进程
文章目录 1. 冯诺依曼体系结构1.1 什么是冯诺依曼体系结构1.2 为什么选择冯诺依曼结构 2. 操作系统2.1 操作系统是什么2.2 操作系统如何对硬件资源进行管理2.3 计算机的层状体系结构 3. 进程3.1 进程是什么3.2 进程的相关属性3.3 在Linux中了解进程3.3.1 查看进程3.3.2 子进程由…...
TVM计算图分割--Collage
1 背景 为满足高效部署的需要,整合大量优化的tensor代数库和运行时做为后端成为必要之举。现在的深度学习后端可以分为两类:1)算子库(operator kernel libraries),为每个DL算子单独提供高效地低阶kernel实现。这些库一般也支持算…...
Liunx知识点
1./dev:是系统设备文件存放位置 /home:是普通用户存放目录 /etc:大部分配置文件的存放目录 /mnt:挂载服务需要的目录 /tmp:存放临时文件 /boot:启动文件 /root:root用户存放目录 /var&am…...
全栈架构设计图
以下是针对Vue前端、服务端、管理后台及数据库的架构图和交互流程设计,采用分层结构和模块化设计思路: 一、系统整体架构图 #mermaid-svg-vAtZ3R6d5Ujm6lYT {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}…...
【SAP ME 42】SAP ME 性能改进
性能问题症状 可观察到以下症状:com.sap.me.production$SfcStartService#startSfc - 此 API 方法具有来自 RESOURCE_TYPE_RESOURCE 表的 SQL 查询的运行速度较慢。 com.sap.me.production$CreateSfcService#createSfc - 对于每个创建的车间作业控制,检查在计划标准配置中是否…...
《GPT-4.1深度解析:AI进化新标杆,如何重塑行业未来?》
一、GPT-4.1:AI 领域的 “全能战士” 降临 1.1 发布背景与战略意义 在 OpenAI 的技术迭代版图中,GPT-4.1 被赋予了 “承前启后” 的关键角色。它不仅是 GPT-4o 的全面升级版,更被视为向 GPT-5 过渡的重要桥梁。2025 年 4 月 15 日的发布会上,OpenAI 宣布 GPT-4.1 系列模型…...
node.js 基础
模块导入和导出 形式1 function get_jenkins(){return "jenkins....." }function test_cc(){return "4444444" }export {get_jenkins,test_cc}// 主函数 import { get_jenkins, test_cc } from ./module.js;console.log(get_jenkins()); console.log(tes…...
数据结构中的宝藏秘籍之广义表
广义表,也被称作列表(Lists),是一种递归的数据结构。它就像一个神秘的盒子,既可以装着单个元素(原子),也可以嵌套着其他的盒子(子列表)。比如广义表 (a (b c)…...
电流模式控制学习
电流模式控制 电流模式控制(CMC)是开关电源中广泛使用的一种控制策略,其核心思想是通过内环电流反馈和外环电压反馈共同调节占空比。相比电压模式控制,CMC具有更快的动态响应和更好的稳定性,但也存在一些固有缺点。 …...
汽车免拆诊断案例 | 2011款雪铁龙世嘉车刮水器偶尔自动工作
故障现象 一辆2011款雪铁龙世嘉车,搭载1.6 L 发动机,累计行驶里程约为19.8万km。车主反映,该车刮水器偶尔会自动工作,且前照灯偶尔会自动点亮。 故障诊断 接车后试车发现,除了上述故障现象以外,当用遥控器…...
#去除知乎中“盐选”付费故事
添加油猴脚本,去除知乎中“盐选”付费故事 // UserScript // name 盐选内容隐藏脚本 // namespace http://tampermonkey.net/ // version 0.2 // description 自动隐藏含有“盐选专栏”或“盐选”文字的回答卡片 // author YourName // mat…...
github 项目迁移到 gitee
1. 查看远程仓库地址 git remote -v 2. 修改远程仓库地址 确保 origin 指向你的 Gitee 仓库,如果不是,修改远程地址。 git remote set-url origin https://gitee.com/***/project.git 3. 查看本地分支 git branch 4. 推送所有本地分支 git p…...
2025年03月中国电子学会青少年软件编程(Python)等级考试试卷(五级)答案 + 解析
青少年软件编程(Python)等级考试试卷(五级) 分数:100 题数:38 一、单选题(共25题,共50分) 1. 以下哪个选项不是Python中的推导式?( ) A. 列表推导式 B. 字典推导式 C. 集合推导式 D. 元组推导式 正确答案:D 答案解析:Python中的推导式包括列表推导式、字典推导式…...
[Unity]-[UI]-[Prefab] 关于UGUI UI Prefab的制作技巧
从上到下,从外到里,多用空物体套壳 这个意思就是说在使用ugui时制作prefab时,要遵循“从上到下,从外到里,多用空物体套壳”的原则,好处就是后面好修改,并且可以复用不同的prefab子模块。且在布…...
【Reading Notes】(8.3)Favorite Articles from 2025 March
【March】 雷军一度登顶中国首富,太厉害了(2025年03月02日) 早盘,小米港股一路高歌猛进,暴涨4%,股价直接飙到52港元的历史新高。这一波猛如虎的操作,直接把雷军的身家拉到了2980亿元,…...
2021-11-09 C++倍数11各位和为13
缘由c函数题找数字的-编程语言-CSDN问答 void 倍数11各位和为13(int n, int& b, int* h) {//缘由https://ask.csdn.net/questions/7559803?spm1005.2025.3001.5141b !(n % 11);while(n)*h n % 10, n / 10; }int a 1, b 1, c 0, d 0;while (a < 100){倍数11各位和…...
2025年03月中国电子学会青少年软件编程(Python)等级考试试卷(六级)真题
青少年软件编程(Python)等级考试试卷(六级) 分数:100 题数:38 答案解析:https://blog.csdn.net/qq_33897084/article/details/147341458 一、单选题(共25题,共50分) 1. 在tkinter的…...
Linux简介
一、Linux 简介 Linux 内核最初只是由芬兰人林纳斯托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。 Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 UNIX 的多用户、多任务、支持多线程和多 CP…...
每天学一个 Linux 命令(22):pwd
可访问网站查看,视觉品味拉满: http://www.616vip.cn/22/index.html pwd 命令用于打印当前工作目录(Print Working Directory)的绝对路径,帮助用户快速确认自己在文件系统中的位置。虽然简单,但它是终端操作中不可或缺的基础命令,尤其在处理相对路径或脚本编写时尤为…...
Windows 11设置开机自动运行 .jar 文件
Windows 11设置开机自动运行 .jar 文件 打开启动文件夹: 按下 Win R,输入 shell:startup,回车。 此路径为当前用户的启动文件夹: C:\Users\<用户名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup创…...
西门子 博途 软件 崩溃
西门子 博途 软件 编译/仿真 崩溃 是因为项目中OPC UA的接口问题 解决拌饭见 https://support.industry.siemens.com/cs/document/109971630/tia-portal-%E5%9C%A8%E7%BC%96%E8%AF%91-plc-%E6%97%B6%E5%B4%A9%E6%BA%83?dti0&dlzh&lcen-WW...
12芯束装光纤不同包层线颜色之间的排列顺序
为什么光纤线必须按照以下颜色顺序进行排序?这其实是为了防止光污染的问题,不同颜色在传递光时从包层表皮漏光传感到梳妆的其它纤芯上,会有光污染的问题,而为了减少并防止光污染的现象,所以在光通信之中,需…...
数据驱动、精准协同:高端装备制造业三位一体生产管控体系构建
开篇引入 鉴于集团全面推行生产运营体建设以及对二级单位生产过程管控力度逐步加强,某高端装备制造企业生产部长王总正在开展新的一年企业生产管控规划工作,为了能够更好地进行体系规划与建设应用,特邀请智能制造专家小智来进行讨论交流。 王…...
HAL详解
一、直通式HAL 这里使用一个案例来介绍直通式HAL,选择MTK的NFC HIDL 1.0为例,因为比较简单,代码量也比较小,其源码路径:vendor/hardware/interfaces/nfc/1.0/ 1、NFC HAL的定义 1)NFC HAL数据类型 通常定…...
RAG知识库中引入MCP
MCP(Memory, Context, Planning)是一种增强AI系统认知能力的框架。将MCP引入RAG知识库可以显著提升系统的性能和用户体验。下面我将详细介绍如何实现这一整合。 MCP框架概述 MCP框架包含三个核心组件: Memory(记忆):存储和管理历史交互和知识Context(上下文):理解当…...
再读bert(Bidirectional Encoder Representations from Transformers)
再读 BERT,仿佛在数字丛林中邂逅一位古老而智慧的先知。初次相见时,惊叹于它以 Transformer 架构为罗盘,在预训练与微调的星河中精准导航,打破 NLP 领域长久以来的迷雾。而如今,书页间跃动的不再仅是 Attention 机制精…...
C# 单例模式
创建一个类 在类中定义方法 internal class Config {// 实现单利模式private static Config instance null;private Config() { }private static object Locker new object(); // 定义lock锁// 通过公有的方法 返回实力public static Config GetInstance(){// 空的自己构造…...
mainwidget.cpp:1741:21: error: use of undeclared identifier ‘mainTab‘
这个错误表明在你的代码中,mainTab 这个变量没有被正确声明或定义。这通常是因为以下原因之一: 变量未声明:mainTab 可能没有在类的成员变量中声明。 变量未初始化:mainTab 可能没有在构造函数中正确初始化。 作用域问题&#x…...
OpenCV day6
函数内容接上文:OpenCV day4-CSDN博客 , OpenCV day5-CSDN博客 目录 平滑(模糊) 25.cv2.blur(): 26.cv2.boxFilter(): 27.cv2.GaussianBlur(): 28.cv2.medianBlur(): 29.cv2.bilateralFilter(): 锐…...
MySQL:Join连接的原理
连接查询的执行过程: 确定第一个需要查询的表【驱动表】 选取代价最小的访问方法去执行单表查询语句 从驱动表每获取到一条记录,都需要到t2表中查找匹配的记录 两表连接查询需要查询一次t1表,两次t2表,在两表的连接查询中&…...
Linux MySQL版本升级(rpm安装方式)
一、背景 近期生产环境扫描发现MySQL的多个安全漏洞。目前厂商已经发布了升级补丁以修复此安全问题,补丁获取链接:https://www.oracle.com/security-alerts/cpuoct2024.html 二、升级注意事项 备份数据:升级前务必备份数据库。检查兼容性&…...
数字图像处理(膨胀与腐蚀)
腐蚀 核心原理:结构元四肢运算结果全为1,则结构元中心为1,否则为0。 怎么计算是否为1还是为0 结构元的值与前景的值进行与运算,如果结构元四肢的与运算结果全为1,则结构元中心为1,否则为0。 假设下图为结构…...