Java新手指南:从菜鸟到编程大师的趣味之路-多态

这里是Themberfue

本章讲的是Java三大特性之一的多态,也是最后一个特性 

 多态概念

        既然我们要学习多态,首先得知道这玩意儿到底是个什么东西?

        通俗地说,多态其实就是多种形态。具体来说就是去完成某个行为,当不同的对象去完成时呈现出不同的状态。

多态的实现

        说完了多态的概念,那它如何实现和使用呢?

        在Java中实现多态,必须要满足以下条件,缺一不可。

1. 必须在继承体系下

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

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

在Java的世界里,多态性是一场魔法秀,父类引用变身为子类对象,就像变魔术一样。当你用父类的引用调用一个重写的方法时,就像魔术师一挥手,舞台上的兔子变成了鸽子,实际调用的是子类的版本。这就是多态的神奇之处,编译时它假装是父类,但运行时却露出了子类的真面目。就像是在说:“嘿,我可能看起来像你爸爸,但我其实是你!”。 

PS:上面这是AI写的,确实有点幽默了。

空讲没感觉,我们通过代码来看看 

class Animal {String name;int age;public Animal(String name, int age){this.name = name;this.age = age;}public void eat(){System.out.println(name + "吃饭");}
}
class Cat extends Animal{public Cat(String name, int age){super(name, age);}@Overridepublic void eat(){System.out.println(name+"吃鱼~~~");}
}
class Dog extends Animal {public Dog(String name, int age){super(name, age);}@Overridepublic void eat(){System.out.println(name+"吃骨头~~~");}
}

        这段代码主要创建了三个类 ,分别是Animal类,Cat类以及Dog类,其中Cat类和Dog类都继承了Animal类,所以Animal类的成员属性和成员方法都会继承过来。

        但是Cat类和Dog类都重写了eat方法,那么当我们通过实例化这些类时,调用这些方法会发生什么呢?我们来看下面这个代码

public class Main {public static void main(String[] args) {Cat cat = new Cat("元宝",2);Dog dog = new Dog("小七", 1);eat(cat);eat(dog);}public static void eat(Animal a){a.eat();}
}

结合上面的代码运行起来后,其结果如下 :

元宝吃鱼~~~
元宝正在睡觉
小七吃骨头~~~
小七正在睡觉

 在上述代码中, 上方的代码是 类的实现者 编写的, 下方的代码是 类的调用者 编写的。

当类的调用者在编写 eat 这个方法的时候, 参数类型为 Animal (父类), 此时在该方法内部并不知道, 也不关注当前的 a 引用指向的是哪个类型(哪个子类)的实例. 此时 a这个引用调用 eat方法可能会有多种不同的表现(和 a 引用的实例 相关), 这种行为就称为 多态. 

 今天的内容就到这里啦,由于SE的内容不是那么难,所以我决定今天就完结SE了,明天开始数据结构?算法题讲解?MySQL?JavaEE?我也不清楚,看我心情吧,嗨嗨嗨。😍😍😍

 

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

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

相关文章

Secret Configmap

应用启动过程中可能需要一些敏感信息,比如访问数据库的用户名,密码或者秘钥,讲这些信息直接保存在容器镜像中显然不合适,kubernetes提供的解决方案就是Secret Secret会以密文的方式存储数据,避免了直接在配置文件中保…

tauri开发配置文件和文件夹访问路径问题

文件夹没权限:Unhandled Promise Rejection: path not allowed on the configured scope: /Users/song/Library/Application Support/com.pakeplus.app/assets/default.png 没有文件夹,需要先创建:Unhandled Promise Rejection: path: /Users…

数据结构与算法——Java实现 24.中缀表达式转后缀

目录 中缀表达式转后缀表达式 引言 思路 代码 正因为我有能力跨越,考验才会降临 —— 24.9.28 中缀表达式转后缀表达式 引言 Java中的编译器会将我们编写代码中的中缀表达式转化为后缀表达式,然后编译好输出程序 思路 遍历中缀表达式,如果遇…

javaweb之会话管理

Cookie: 1. Cookie 的定义 Cookie 是存储在用户浏览器中的小块数据,通常由服务器发送并存储,以便在用户浏览器和服务器之间保持会话状态。每次用户发送请求时,浏览器都会自动附带相应的 Cookie,允许服务器辨识用户。…

JSR 303学习

系列文章目录 JavaSE基础知识、数据类型学习万年历项目代码逻辑训练习题代码逻辑训练习题方法、数组学习图书管理系统项目面向对象编程:封装、继承、多态学习封装继承多态习题常用类、包装类、异常处理机制学习集合学习IO流、多线程学习仓库管理系统JavaSE项目员工…

低代码可视化-UniApp二维码可视化-代码生成器

市面上提供了各种各样的二维码组件,做了一简单的uniapp二维码组件,二维码实现依赖davidshimjs/qrcodejs。 组件特点 跨浏览器支持:利用Canvas元素实现二维码的跨浏览器兼容性,兼容微信小程序、h5、app。 无依赖性:QR…

基于SpringBoot的新冠检测信息管理系统的设计与实现

文未可获取一份本项目的java源码和数据库参考。 国内外在该方向的研究现状及分析 新型冠状病毒肺炎疫情发生以来,中国政府采取积极的防控策略和措施,经过两个多月的不懈努力,有效控制了新发病例的増长,本地传播已经趋于完全控制…

JavaWeb图书借阅系统

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 spring-mybatis.xml3.5 spring-mvc.xml3.5 login.jsp 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优…

Elasticsearch学习笔记(1)

初识 Elasticsearch 认识和安装 Elasticsearch 是由 Elastic 公司开发的一套强大的搜索引擎技术,属于 Elastic 技术栈的一部分。完整的技术栈包括: Elasticsearch:用于数据存储、计算和搜索。Logstash/Beats:用于数据收集。Kib…

运放模块的选型参数

增益带宽积-----尤其重要: GWB 增益*带宽 压摆率: 高带宽的运放一般都是电流型运放: 注意压摆率计算公式里面的Vopp参数是放大后的电压最大值: 参数,布局一定参考数据手册!!!&…

关于AI副业,能说的都说了(最核心3大赛道、机会、方向)

AI,是生产力工具~ AI,也是焦虑和痛点 一直有小伙伴在问AI副业的事儿,之前也分享过很多。 但是,很多人对AI于副业的作用,过于表面和形式,所以,狂金来叨叨一下最核心的3大赛道,希望…

本地部署ollama大模型

方案一 1. 安装 Docker Ollama 大模型通常是通过 Docker 来运行的,因此首先需要确保本地已经安装了 Docker。如果还没有安装 Docker,可以参考以下安装步骤: Mac 用户: 前往 Docker 官网 下载并安装 Docker Desktop。安装完成后&…

【C语言】动态内存管理:malloc、calloc、realloc、free

本篇介绍一下C语言中的malloc/calloc/realloc。 使用这些函数需要包含头文件<stdlib.h>。malloc/calloc/realloc申请的空间都是 堆区的。 1.malloc和free 1.1 malloc C语言提供了一个动态内存开辟的函数malloc&#xff0c;函数原型如下。 void* malloc(size_t size);…

确保架构与业务一致性和合规性的成功转型之路:理论与实践的全面解读

架构与业务一致性在数字化转型中的重要性 在数字化转型的过程中&#xff0c;企业架构与业务的一致性是确保技术变革能够真正推动业务发展的关键因素之一。企业架构不仅要支持业务需求&#xff0c;还需要确保与行业标准、法律法规的合规性。通过将理论转化为实践&#xff0c;企…

渗透测试--文件上传常用绕过方式

文件上传常用绕过方式 1.前端代码&#xff0c;限制只允许上传图片。修改png为php即可绕过前端校验。 2.后端校验Content-Type 校验文件格式 前端修改&#xff0c;抓取上传数据包&#xff0c;并且修改 Content-Type 3.服务端检测&#xff08;目录路径检测&#xff09; 对目…

无人机专业实操重要性凸显,组装、调试、改装技术详解

无人机专业的实操性在当今技术飞速发展的背景下显得尤为重要&#xff0c;这不仅体现在无人机的日常应用上&#xff0c;还贯穿于无人机的组装、调试及改装等关键环节中。以下是对这些技术环节的详细解析&#xff1a; 一、无人机组装技术 无人机的组装是无人机技术的基础&#x…

mysql8.0安装后没有my.ini

今天安装mysql后想改一下配置文件看了一下安装路径 C:\Program Files\MySQL\MySQL Server 8.0 发现根本没有这个文件查看隐藏文件也没用查了之后才知道换地方了和原来的5.7不一样 新地址是C:\ProgramData\MySQL\MySQL Server 8.0 文件也是隐藏的记得改一下配置

Json-Rpc框架(Muduo库快速上手)

阅读导航 引言一、Muduo库简介二、Muduo库常见接口1. TcpServer类基础介绍2. EventLoop类基础介绍3. TcpConnection类基础介绍4. TcpClient类基础介绍5. Buffer类基础介绍 三、Muduo库使用示例⭕英译汉服务器⭕英译汉客户端 引言 在上一篇文章中&#xff0c;我们简要介绍了在项…

SpringBoot教程(安装篇) | Docker Desktop的安装(Windows下的Docker环境)

SpringBoot教程&#xff08;安装篇&#xff09; | Docker Desktop的安装&#xff08;Windows下的Docker环境&#xff09; 前言如何安装Docker Desktop资源下载安装启动&#xff08;重点&#xff09;加入汉化包 设置加速镜像 前言 如果你在 Windows 上&#xff0c;确保 Docker …

Java实现找色和找图功能

某天&#xff0c;张三接到一个任务需求&#xff0c;将一个Excel表格里面的员工信息&#xff0c;录入到员工系统里面&#xff0c;由于数据量非常大&#xff0c;操作起来巨慢。经过一段时间的操作和观察&#xff0c;他发现这种操作&#xff0c;非常有规律&#xff0c;基本就是一些…