java多态

Java的多态性是面向对象编程的关键特性,它基于继承和封装。多态体现在方法的重写和重载,以及对象的编译类型和运行类型可能不一致。在多态中,父类引用可以指向子类对象,但不能调用子类特有的成员。动态绑定机制确保方法调用与对象的运行类型绑定。多态的应用包括多态数组和多态参数。
摘要由CSDN通过智能技术生成

java多态

基本介绍

方法或对象具有多种形态,是面向对象的第三大特征 ,多态是建立在封装和继承基础之上的

多态的具体体现

  1. 方法的多态 重写和重载就体现多态

    在这里插入图片描述

在这里插入图片描述

2.对象的多态

  1. 一对象的编译类型和运行类型可以不一致

  2. 编译类型在定义对象时 就确定了 不能改变

  3. 编译类型是可以变化的

  4. 编译类型看定义是 = 号的左边 运行类型看= 号的右边

在这里插入图片描述

在这里插入图片描述

多态的注意事项和细节讨论

多态的前提

1、两个对象(类)存在继承关系

2、多态的向上转型

//向上转型:父类的引用指向子类的对象
//语法:父类类型引用名 = new 子类类型();
Animal animal = new Dog();
Object obj = new Dog();
/*规则如下:
1.编译类型看左边 运行类型看右边 
2.可以调用父类中的所有成员(需要遵循访问权限)
3.不能调用子类中特有的成员(编译器来决定的)
4.在编译阶段 能调用那些成员是由编译类型类决定的
5.最终运行效果看子类(运行类型)的具体实现
*/

3、多态的向下转型

1、语法:子类类型 引用名=(子类转型)父类引用;

2、只能强转父类的引用,不能强壮父类的对象

3、要求父类的引用必须指向的是当前目标类型的对象

4、当向下转型后可以调用子类类型中所有的成员

在这里插入图片描述

4、重写

属性没有重写之说 属性的值看编译类型

instanceof 比较操作符 用于判断对象的运行类型是否为xx类型或xx类型的子类行

在这里插入图片描述

课堂练习

在这里插入图片描述

在这里插入图片描述

java的动态绑定机制

动态绑定机制:
1、当调用对象方法的时候,该方法会和该对象的内存地址/运行类型绑定
2、当调用对象属性时 没有动态绑定机制 哪里有声明 哪里使用

在这里插入图片描述

1、在调用geti()方法时 会产生动态绑定 找向运行类型中的方法
如果运行类型中的方法没有时,根据继承机制进行寻找
2、在调用对象属性时 不会产生动态绑定

多态应用

多态数组

定义

数组的定义类型为父类类型 里面保存的实际元素类型为子类类型

多态参数

方法定义的形参类型为父类类型 实参类型允许为子类类型

里面保存的实际元素类型为子类类型

多态参数

方法定义的形参类型为父类类型 实参类型允许为子类类型
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

加菲猫���

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值