Java-多态(上)
2021/7/15 17:09:07
本文主要是介绍Java-多态(上),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
什么是多态
同一方法可以根据发送对象的不同而采取多种不同的行为方式
一个对象实际类型是确定的 但指向其引用类型却有很多
注意事项
- 多态是方法的多态 属性没有多态
- 父类和子类 有联系 类型转换异常 ClassCastException
- 存在的条件
- 继承关系
- 方法需要重写
- 父类的引用指向子类对象
场景假设
好比如你的 父亲 有三个儿子 儿子总有一方面长得和爹比较像
大儿子 皮肤比较黑 二儿子 皮肤比较黄 三儿子 皮肤比较白
有一种方法 一种一种判断
if skin == "黄" 是二儿子 if skin == "黑" 是大儿子 if skin == "白" 是三儿子
利用多态 不需要一个个判断 看到皮肤颜色就知道是谁
是因为Java实例方法是基于运行时的实际类型的动态调用 而非变量的声明类型
基类
package com.oop.demo09; // 父亲类 public class Father { public void getSkin(){ System.out.println("...."); } }
大儿子
package com.oop.demo09; public class First extends Father { @Override public void getSkin() { System.out.println("我是老大 皮肤 比较黑"); } }
二儿子
package com.oop.demo09; public class Second extends Father { @Override public void getSkin() { System.out.println("二儿子 皮肤 比较黄"); } }
三儿子
package com.oop.demo09; public class Third extends Father { @Override public void getSkin() { System.out.println("三儿子 皮肤比较白"); } }
测试类
package com.oop; import com.oop.demo09.Father; import com.oop.demo09.First; import com.oop.demo09.Second; import com.oop.demo09.Third; public class Applcation { public static void main(String[] args) { Father father = new Father(); father.getSkin(); System.out.println("===================="); Father father1 = new First(); father1.getSkin(); System.out.println("===================="); Father father2 = new Second(); father2.getSkin(); System.out.println("===================="); Father father3 = new Third(); father3.getSkin(); /* * Father father3 = new Third(); * 父类的引用指向子类的实例 * * Third继承自Father 它拥有Father的非private得属性和方法 * 其他子类也是一样的 * * 将Father得引用 指向Third得实例 完全ok * */ } }
输出
没有每次判断 皮肤颜色 来 打印输出 不用管他是哪个儿子 只需要跟getSkin打交道就好了
利用多态的方式 即 一个类的多种形态 下面继承树
小结
- 多态实现的基础 就是 继承 没有继承没有多态
- Java实例方法是基于运行时的实际类型的动态调用 而非变量的声明类型
- 多态 一个类的多种表现形式 一般用于接口
这篇关于Java-多态(上)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-11有哪些好用的家政团队管理工具?
- 2025-01-11营销人必看的GTM五个指标
- 2025-01-11办公软件在直播电商前期筹划中的应用与推荐
- 2025-01-11提升组织效率:上级管理者如何优化跨部门任务分配
- 2025-01-11酒店精细化运营背后的协同工具支持
- 2025-01-11跨境电商选品全攻略:工具使用、市场数据与选品策略
- 2025-01-11数据驱动酒店管理:在线工具的核心价值解析
- 2025-01-11cursor试用出现:Too many free trial accounts used on this machine 的解决方法
- 2025-01-11百万架构师第十四课:源码分析:Spring 源码分析:深入分析IOC那些鲜为人知的细节|JavaGuide
- 2025-01-11不得不了解的高效AI办公工具API