“深入剖析Java多态:点燃编程世界火花“

White graces:个人主页

🙉专栏推荐:Java入门知识🙉

🙉 内容推荐:“继承与组合:代码复用的两种策略“🙉

🐹今日诗词:马踏祁连山河动,兵起玄黄奈何天🐹


快去学习

 

🌸思维导图🌸

🌸一.多态概念🌸

💦多态:不同对象执行同一方法产生出不同结果

💦比如:狗狗吃饭和猫咪吃饭,同样吃饭,狗狗吃狗粮,猫咪吃猫粮,这也是多态

🌸二.多态实现条件🌸

💦三要素: 🌼1.继承

                    🌼2.子类必须要对父类方法进行重写

                    🌼3.通过父类的引用调用重写的方法

💦这三者同时具备形成了多态

package Test1;
class Animal {String name;int age;public Animal(String name, int age) {this.name = name;this.age = age;}public void eat() { //父类的方法System.out.println(age + "岁的" + name + "正在吃-----");}
}
class Dog extends Animal {public Dog(String name, int age) {super(name,age);}@Override           //这表明父类方法被重写了public void eat() {  //子类重写父类方法System.out.println(age + "岁的" + name + "正在吃狗粮");}
}
class Cat extends Animal {public Cat(String name, int age) {super(name, age);}@Overridepublic void eat() {     //子类重写父类方法System.out.println(age + "岁的" + name + "正在吃猫粮");}
}
public class Test1 {public static void eat(Animal animal) { //Animal animal就是父类的引用animal.eat();}public static void main(String[] args) {Dog dog = new Dog("狗狗", 3);Cat cat = new Cat("猫猫", 4);eat(dog); ///通过父类的引用调用对应的eat方法eat(cat);}
}

🌼运行结果🌼

🌸三.重写和重载🌸

💦重写:方法名不变、参数不变、返回类型不变、内容随意(除了内容,其他和父类保持一致

💦重载:方法名不变、参数必须改变、返回类型可以改变、内容随意

💦可以参考下图

🌸四.转型🌸

🍎1.向上转型🍎

💦实际就是创建一个子类对象

💦语法:父类类型  对象名 = new 子类类型

package Test1;
class Animal {String name;int age;public Animal(String name, int age) {this.name = name;this.age = age;}public void eat() { //父类的方法System.out.println("父类方法");}
}
class Dog extends Animal {public Dog(String name, int age) {super(name,age);}@Override           //这表明父类方法被重写了public void eat() {  //子类重写父类方法System.out.println(age + "岁的" + name + "正在吃狗粮");}public void bark() {System.out.println("汪汪叫");}
}public class Test1 {public static void eat(Animal animal) { //Animal animal就是父类的引用animal.eat();}public static void main(String[] args) {Animal animal =new Dog("狗狗",3);eat(animal); animal.eat(); //两者运行结果相同}
}

💦值得注意的是:向上转型之后就不能调用了子类Dog特有的bark方法了

🍎2.向下转型🍎

💦向下转型用到的方法是强制类型转换

💦我们来看一个实例

🌳1.instanceof关键字🌳

📚作用:判断是否成功向下转型

📚格式:对象名 + instanceof + 类型

🌸五.多态与选择语句🌸

📚分别用多态选择语句实现一个画图形功能

💦有四种图形:⚪,矩形,正方形,三角形,我们用类来描述

class Shape {public void draw() {System.out.println("画图型");}
}
class Yuan extends Shape {@Override  //重写public void draw() {System.out.println("⚪");}
}
class Juxing extends Shape {@Override //重写public void draw() {System.out.println("矩形");}
}
class Fang extends Shape {@Overridepublic void draw() {System.out.println("正方形");}
}
class San extends Shape {@Overridepublic void draw() {System.out.println("三角形");}
}

🌼选择语句实现🌼

 

🌼多态实现🌼

🌸六.重写方法的调用🌸

📚我们来看一下面的坑爹例子

package Test1;
class B {public B() {func();  //构造方法中调用func方法}public void func() {System.out.println("B.func()");}
}
class D extends B {private int num = 1;@Overridepublic void func() {  //子类重写了父类的func方法System.out.println("D.func() " + num);}
}
public class Test1 {public static void main(String[] args) {D d = new D();}
}

🌼运行结果和分析🌼

🌼 温馨提示🌼

🌼尽量不要在构造方法中调用其他方法🌼

🧡🧡🧡🧡🧡🧡🧡🧡🧡

🧡🧡🧡以上就是这篇文章的所有内容了🧡🧡🧡

🧡🧡🧡谢谢阅读本文,希望你能从中获得一些启发和思考 🧡🧡🧡

🌸三.结语+美图分享🌸


✨🎆谢谢你的阅读和耐心!祝愿你在编程的道路上取得更多的成功与喜悦!"🎆✨🎄

⭐️点赞收藏加关注,学习知识不迷路⭐️

🎉✔️💪🎉✔️💪🎉✔️💪🎉✔️💪🎉

👍😏⛳️ 点赞☀️收藏 ⭐️ 关注!😏👍

👍😏⛳️ 点赞☀️收藏 ⭐️ 关注!😏👍

👍😏⛳️ 点赞☀️收藏 ⭐️ 关注!😏👍

🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️🙆‍♂️

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/69666.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Centos8安装docker并配置Kali Linux图形化界面

鉴于目前网上没有完整的好用的docker安装kali桌面连接的教程,所以我想做一个。 准备工作 麻了,这服务器供应商提供的镜像是真的纯净,纯净到啥都没有。 问题一:Centos8源有问题 Error: Failed to download metadata for repo ap…

Docker容器:docker基础概述、安装、网络及资源控制

文章目录 一.docker容器概述1.什么是容器2. docker与虚拟机的区别2.1 docker虚拟化产品有哪些及其对比2.2 Docker与虚拟机的区别 3.Docker容器的使用场景4.Docker容器的优点5.Docker 的底层运行原理6.namespace的六项隔离7.Docker核心概念 二.Docker安装 及管理1.安装 Docker1.…

《电路》基础知识入门学习笔记

文章目录: 一:电路模型和电路规律 1.电路概述 2.电路模型 3.基本电路物理量:电流、电压、电功率和能量 4.电流和电压的参考方向 5.电路元件—电阻 6. 电路元件—电压源和电流源 7.受控电源 8.基尔霍夫(后面都要用这个方法…

2023 年最好的 AI 生产力工具

2023 年最好的 AI 生产力工具 本文主要展示了36 款 AI 应用,可以帮助读者更快、更好地工作。每个人都在与ChatGPT交流,从完整的博客文章到特定代码行的功能都在询问。其结果令人惊叹。虽然我们仍在探索如何将这项技术纳入我们的工作流程中,但…

AI Deep Reinforcement Learning Autonomous Driving(深度强化学习自动驾驶)

AI Deep Reinforcement Learning Autonomous Driving(深度强化学习自动驾驶) 背景介绍研究背景研究目的及意义项目设计内容算法介绍马尔可夫链及马尔可夫决策过程强化学习神经网络 仿真平台OpenAI gymTorcs配置GTA5 参数选择行动空间奖励函数 环境及软件…

SpringBoot-Hello World

SpringBootWeb快速入门 创建Springboot工程,并勾选web开发相关依赖定义HelloController类,添加方法hello,并添加相关注释运行测试 创建新的SpringBoot项目 几个注意的点: Name:基本上不用管,会根据下面的Ar…

SpringBoot复习:(29)静态资源的配置路径

WebMvcAutoConfiguration 首页处理:

Java多线程(4)---死锁和Synchronized加锁流程

目录 前言 一.synchronized 1.1概念 1.2Synchronized是什么锁? 1.3Synchronized加锁工作过程 1.4其他优化操作 二.死锁 2.1什么是死锁 2.2死锁的几个经典场景 2.3死锁产生的条件 2.4如何解决死锁 🎁个人主页:tq02的博客_CSDN博客…

【HarmonyOS北向开发】-01 HarmonyOS概述

飞书原文链接-【HarmonyOS北向开发】-01 HarmonyOS概述https://fvcs2dhq8qs.feishu.cn/docx/TDf2d2KMaoPSUUxnvg2cASDdnCe?fromfrom_copylink

QT学习笔记-QT安装oracle oci驱动

QT学习笔记-QT安装oracle oci驱动 0、背景1、环境以及条件说明2、编译驱动2.1 下载oracle instant client2.2 编译qt oci驱动2.2.1 修改oci.pro2.2.2 MinGW64构建套件编译2.2.3 MSVC2019_64构建套件编译 3、访问数据库运行成功 0、背景 在使用QT开发应用的过程中,往…

vector【2】模拟实现(超详解哦)

vector 引言(实现概述)接口实现详解默认成员函数构造函数析构函数赋值重载 迭代器容量size与capacityreserveresizeempty 元素访问数据修改inserterasepush_back与pop_backswap 模拟实现源码概览总结 引言(实现概述) 在前面&…

开源可商业运营的ChatGpt网页源码v1.2.2

🤖 主要功能 后台管理系统,可对用户,Token,商品,卡密等进行管理 精心设计的 UI,响应式设计 极快的首屏加载速度(~100kb) 支持Midjourney绘画和DALLE模型绘画,GPT4等应用 海量的内置 prompt 列表,来自中文和英文 一键导…