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-多态(上)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-05并查集详解与实现教程
- 2024-11-05大厂数据结构与算法入门指南
- 2024-11-05大厂算法与数据结构入门指南
- 2024-11-05二叉树入门教程:轻松掌握基础概念与操作
- 2024-11-05红黑树入门教程:从零开始理解红黑树
- 2024-11-05初学者必备:链表基础知识详解
- 2024-11-05平衡树入门教程:理解、构建与应用
- 2024-11-05数据结构入门教程:轻松掌握基础知识
- 2024-11-05数据结构与算法入门教程
- 2024-11-05优先队列入门教程:理解与实现