课时74:多态性简介

简介: 多态性是面向对象中的第三大主要特征,多态性是在继承性的基础之上扩展出来的概念,也就是说可以实现父子类之间的相转化处理。1.方法的多态性2. 对象的多态性

课时74:多态性简介

 

摘要:多态性是面向对象中的第三大主要特征,多态性是在继承性的基础之上扩展出来的概念,也就是说可以实现父子类之间的相转化处理。

1.方法的多态性

2. 对象的多态性

 

01. 方法的多态性


在 Java之中对于多态性有两种实现模式。

1.1 方法的重载

例如以下代码:同一个方法名称可以根据传入的参数的类型或个数的不同实现不同的功能的执行。类似于白天一个身份,晚上一个身份。

代码如下:

class Message {
    public void print() {
        System.out.println("www.mldn.cn");
    }
    
    public void print(String str) {
        System.out.println(str);
    }
}
public class JavaDemo {
    public static void main(String args[]) {
    }
}

image.png

1.2 方法的覆写

同一个方法可能根据子类的不同有不同的实现。

代码如下:

class Message {
    public void print() {
        System.out.println("www.mldn.cn");
    }
}
class DataBaseMessage extends Message {
    public void print() {
        System.out.println("Oracle数据库连接信息...." );
    }
}
class NetworkMessage extends Message {
    public void print() {
        System.out.println("网络连接信息...." );
    }
}
public class JavaDemo {
    public static void main(String args[]) {
        // main方法中的代码未显示在图中
    }
}

image.png

此时我们发现一个问题:如果类不同,Print的方法功能能一样吗?当然是不一样的。所以我们发现,方法的重载与方法的覆写都要根据实际情况而有所改变。这就是方法的多态性。方法的多态性并不难理解,那什么是对象的多态性呢?

 

02. 对象的多态性


父子实例之间的转换处理,它有两种模式:

对象的向上转型:父类 父类实例 = 子类实例、自动完成转换

对象的向下转型:子类 子类实例 =(子类)父类实例、强制完成转换


例如说人是动物,就属于向上转型;若说动物是人,则特指了一下,就是向下转型。从实际情况的转型处理来讲,大部分情况下考虑最多的一定是对象的向上转型(90%)、对于对象的向下转型往往都在使用子类特殊功能(子类可以对付类进行功能扩充)的时候采用向下转型(3%),还有一些情况是不会考虑转型的(String类、7%)。

 

相关文章
|
7月前
|
Java
课时78:Object类的基本概念
Object类的主要特点是可以解决参数的统一问题,使用object类可以接受所有的数据类型。 1. Object类简介 2. 观察Object类接收所有子类对象 3. 使用Object类接收数组
148 0
|
9月前
|
JSON 前端开发 搜索推荐
关于商品详情 API 接口 JSON 格式返回数据解析的示例
本文介绍商品详情API接口返回的JSON数据解析。最外层为`product`对象,包含商品基本信息(如id、name、price)、分类信息(category)、图片(images)、属性(attributes)、用户评价(reviews)、库存(stock)和卖家信息(seller)。每个字段详细描述了商品的不同方面,帮助开发者准确提取和展示数据。具体结构和字段含义需结合实际业务需求和API文档理解。
|
11月前
|
传感器 人工智能 数据可视化
数字孪生与环境监测:生态保护的新手段
【10月更文挑战第31天】数字孪生技术通过传感器、物联网、虚拟现实和人工智能等手段,创建物理环境的数字副本,实现实时监测、预测和优化。在环境监测中,数字孪生可应用于空气质量、水质监测和自然保护区管理等领域,提高决策效率和准确性,助力生态保护和可持续发展。
|
10月前
|
C语言
【C语言】符号优先级详解 -《谁与争锋 ! 》
理解C语言中的运算符优先级和结合性是编写正确代码的关键。本文详细介绍了C语言中的各种运算符、它们的优先级和结合性,并通过示例展示了如何正确使用这些运算符。掌握这些知识,将有助于编写出逻辑严谨、结构清晰的C语言程序。
433 8
|
运维 jenkins Linux
【Jenkins稳定运维】服务器频繁崩溃?资深管理员的应对策略
本文分享了作者作为管理员在面对服务器频繁崩溃时的应对策略,包括使用Shell脚本优化运维工作、学习Jenkins Pipeline插件以及一些运维技能扩展,强调了在运维工作中不断学习和实践的重要性。
152 0
【Jenkins稳定运维】服务器频繁崩溃?资深管理员的应对策略
|
12月前
|
数据挖掘 测试技术 UED
A/B测试
【10月更文挑战第10天】A/B测试
497 2
|
消息中间件 算法 Java
面试官:Kafka中的key有什么用?
面试官:Kafka中的key有什么用?
543 3
面试官:Kafka中的key有什么用?
|
存储 设计模式 JSON
Kotlin学习教程(五)
Kotlin学习教程(五)
238 2
|
安全 网络安全 数据安全/隐私保护
HTTPS中的加密算法
HTTPS中的加密算法
|
存储 缓存 边缘计算
网站静态资源访问加速
本方案使用阿里云CDN产品来分发OSS上的网站静态文件,不仅可以降低源站的负载压力,还能够提升网站的访问性能,同时还能在高并发场景下为您节约成本。
238 4