多态基础知识
一、多态概念多态同一个行为不同对象有不同的实现形态。 父类引用指向子类对象调用重写方法时会执行子类重写后的逻辑。多态的前提条件必须全部满足存在继承 / 实现关系extends /implements子类对父类方法进行方法重写 Override父类引用指向子类对象父类 引用变量 new 子类();通俗理解同样是动物叫狗是汪汪汪猫是喵喵喵同一个 “叫” 行为不同对象表现不一样就是多态。二、多态基础语法格式//父类引用指向子类对象 父类类型 变量名 new 子类类型(); 变量名.方法();代码演示//父类 class Animal{ public void shout(){ System.out.println(动物发出叫声); } } //子类Dog继承Animal class Dog extends Animal{ //重写父类shout方法 Override public void shout() { System.out.println(小狗汪汪汪); } } //子类Cat继承Animal class Cat extends Animal{ Override public void shout() { System.out.println(小猫喵喵喵); } } public class TestPoly { public static void main(String[] args) { // 多态写法父类引用接收子类实例 Animal a1 new Dog(); Animal a2 new Cat(); //调用重写方法执行子类的逻辑 a1.shout(); a2.shout(); } }运行输出小狗汪汪汪 小猫喵喵喵重点编译看左边父类运行看右边子类 编译检查父类有没有该方法运行执行子类重写后的方法。三、多态成员访问规则重点初学者易错1. 成员方法编译看左边运行看右边编译看父类是否存在该方法运行执行new出来的子类重写后的方法。2. 成员变量编译看左边运行也看左边多态下变量不看子类永远取父类中的变量值。class Father{ int num 10; public void show(){ System.out.println(父类show); } } class Son extends Father{ int num 20; Override public void show(){ System.out.println(子类show); } } public class Demo{ public static void main(String[] args) { Father f new Son(); System.out.println(f.num); //输出10取父类变量不是子类 f.show(); //输出子类show方法执行子类重写 } }输出10 子类show⚠️坑点多态引用访问成员变量不会调用子类的成员变量只看引用的父类类型。开发中尽量不要使用同名成员变量。四、多态的好处提高代码扩展性方法参数写父类类型可以接收所有它的子类对象。解耦合方法不需要依赖具体子类只依赖父类。代码示例多态作为方法参数class Animal{ public void shout(){} } class Dog extends Animal{ Override public void shout() { System.out.println(汪汪汪); } } class Cat extends Animal{ Override public void shout() { System.out.println(喵喵喵); } } public class Test { //参数写父类Animal可以接收Dog、Cat所有子类 public static void animalCry(Animal animal){ animal.shout(); } public static void main(String[] args) { animalCry(new Dog()); animalCry(new Cat()); } }以后新增Pig extends Animal不需要修改 animalCry 方法直接传入 new Pig () 即可这就是扩展性。五、多态的弊端父类引用指向子类对象时不能直接调用子类独有的方法。class Animal{} class Dog extends Animal{ //子类独有的方法父类没有 public void guardHome(){ System.out.println(狗看家); } } public class Demo{ public static void main(String[] args) { Animal a new Dog(); //a.guardHome(); //编译报错父类没有这个方法无法直接调用 } }解决方案向下转型强制类型转换六、向上转型 向下转型1. 向上转型就是多态本身自动转换Animal a new Dog();子类对象自动转为父类类型安全不需要强转。2. 向下转型强制转换目的调用子类独有方法语法子类 变量 (子类)父类引用;Animal a new Dog(); Dog dog (Dog) a; //向下强制转型 dog.guardHome(); //现在可以调用子类独有方法风险如果实际对象不是目标子类运行抛出ClassCastException类型转换异常。使用 instanceof 做判断避免转型异常对象 instanceof 类判断该对象是不是这个类 / 子类的实例返回 boolean。public static void test(Animal animal){ if(animal instanceof Dog){ Dog d (Dog) animal; d.guardHome(); }else if(animal instanceof Cat){ Cat c (Cat) animal; c.catchMouse(); } }七、本章小结多态三要素继承 / 实现、方法重写、父类引用指向子类对象。口诀成员方法编译看左运行看右成员变量编译运行都看左。向上转型自动完成向下转型需要强转配合instanceof防止异常。好处方法参数写父类兼容全部子类提升扩展缺点不能直接访问子类特有功能。

相关新闻

【Cursor】AI编程助手开发指南:把 Base URL 改到 TaoToken 的完整配置与验证

【Cursor】AI编程助手开发指南:把 Base URL 改到 TaoToken 的完整配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/12 19:29:14 阅读更多 →
小白福音!Windows 一键装 OpenClaw,TaoToken 打通 AI 办公全流程

小白福音!Windows 一键装 OpenClaw,TaoToken 打通 AI 办公全流程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/12 5:02:18 阅读更多 →
AI搜索倒逼内容重构:GEO如何改写企业获客路径

AI搜索倒逼内容重构:GEO如何改写企业获客路径

一、AI搜索排名因素分析的四个常见问题当用户习惯从“搜网页”转向“问AI”,企业内容的曝光逻辑正在被重写。第一个问题随之浮现:传统网页优化积累的权重,能否平移到大模型问答场景?第二个问题更现实:企业官网、产品页…

2026/10/18 5:33:34 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/12 5:00:00 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/12 5:13:20 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/12 5:13:20 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/12 18:22:26 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/12 18:22:25 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/12 5:13:20 阅读更多 →

日新闻

周新闻

月新闻