Java进阶——面向对象:多态

本文详细介绍了多态的概念、重载与重写、向上转型与向下转型、instanceof的使用以及多态的优势,包括可替换性、可扩充性和灵活性。同时涵盖了里式替换原则和对象数组在Java中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

1.含义

2.向上转型

3.向下转型

4.instanceof

5.多态的优势

6.里式替换

7.对象数组的使用


1.含义

多态是面对对象的三大特征之一

通常含义是指能够呈现多种不同的形式或形态,也就是根据用到不同对象类型,响应不同操作,方法重写是多态的基础。

1.重载是编译时的多态

2.重写是运行时多态

3.实现多态的三个条件

(1)子类继承父类,并且子类重写父类方法。

(2)父类引用指向子类对象(父类引用可以指向任意一个子类对象)。

(3)父类引用调用方法时,实际上调用的时子类的方法(父类指向哪个子类就调用哪个子类的方法),不同的子类有不同的方法实现,体现出同一个方法在不同子类中的不同形态的表现

4.调用的时候注意事项

(1)父类只能调用子类从父类继承的方法或者重写的方法。

(2)父类不能调用子类新增的方法。

2.向上转型

父类类型 引用变量名 = new 子类类型();

子类向父类转换称为向上转型

父类类型的变量引用了一个子类对象,向上转型

此时只能调用父类中声明的方法,子类扩展发方法不能调用,调用实例方法时,要看是哪个对象调用的就执行哪个方法

调用static方法时,调用的时父类方法

调用实例方法时看等号右边,static看等号左边

3.向下转型

就是想要调用子类方法时,可以通过把父类转换为子类实现,向下转型时必须使用强制类型转换。

语法规则:子类类型 引用变量名 = (子类类型)父类类型引用变量;

向下转型的过程里为了确保可以强制类型转换,需要先使用instanceof进行判断。

例如在Dog类中包含一个catchingDisc()方法是,它属于子类新增则只能做向下转型;

Dog dog = (Dog)pet;
dog.catchingFlyDisc

4.instanceof

instanceof在有继承关系的类之间使用

在向下转型的过程中,如果不是真实的子类类型,会出现类型转换异常。

if(pet instanceof Dog dog) {
    dog.catchingFlyDisc();
}
if(pet instanceof Bird bird) {
    bird.fly();
}

5.多态的优势

1.可替换性:多态对已存在的代码具有可替换性。

2.可扩充性:多态对代码有可扩充性

3.接口性:多态是父类向子类提供了一个共同借口,由子类来具体实现

4.灵活性多态在应用中体现了灵活多样的操作,提高了使用效率。

5.简化性;多态简化了应用软件的代码编写和修改。

6.里式替换

子类对象应该能够替换其父类对象,而不会影响程序的正确性

父类能出现的地方,子类都可以出现

7.对象数组的使用

对象数组是Java中的一种数据结构,可以用于存储多个对象。在Java中,可以使用以下方式声明和初始化对象数组:

// 声明对象数组
ClassName[] objectName = new ClassName[arrayLength];
​
// 初始化对象数组
for (int i = 0; i < arrayLength; i++) {
    objectName[i] = new ClassName();
}
​
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值