Java 多态
来源:互联网 发布:巴西柔术知乎 编辑:程序博客网 时间:2024/04/29 19:50
Java 多态
一、多态
什么是多态?
多态是指同一行为具有多个不同的表现形式或形态的能力。(相同的行为,不同体现);
1、多态分为静态多态(编译时多态、早绑定)和动态多态(运行时多态、晚时绑定)
1)静态多态:
是调用在一个类中有多个具有相同名称和不同参数列表的方法。他使用方法重载实现
2)动态多态:
只允许不同类的对象对同一行为(方法)做出响应;即同一行为(方法)可以根据发送对象的不同而采用多种不同的表象形式;它使用动态多态绑定技术和方法重写实现。
2、动态绑定技术:(dynamic binding)也叫延时绑定或后期绑定,
是指在执行期间而不是编译时判断所引用对象的实际类型,根据其实际类型调用其相应的方法。由于动态绑定是在执行期实现,这将导致Java程序在运行时性能下降,这也是Java程序性能不如其他语言编写的程序的一个主要原因。
3、动态绑定的条件是什么?
1)要有继承
2)要有方法重写
3)要有父类变量引用类的对象
4)要有父类变量调用重写的方法
4、类的类型转换规则是什么?
在继承关系的子类和父类中,有如下规则:
1) 一个父类引用类型变量可以引用子类对象;
2) 一个父类引用类型变量不可以访问子类对象新增加的成员变量和方法;
3) 可以使用instanceof关键字来安短引用类型变量所引用的对象是否属于某一个雷;
即判断子类是否是相应父类的子类
1、 什么是向上转型?
在继承关系中,子类的对象可以直接当做父类的对象使用,称为向上转换;
2、 什么是向下转型?
在继承关系中,从父类对象到子类对象的转换,称为向下转换。向下转换要用强制类型转换;
注意:
向上转换是安全的,向下转换类型是非安全的,建议使用向下转换时,先使用instenceof关键字验证具体的子类类型转换在进行强制类型转换。
7、多态的作用或优点:
1)可替换性。多态对已存在的代码具有可替换性;
2)可扩展性。多态对代码具有可扩展性,增加新的子类不影响已存在类的多态继承性,以及其他特性的运行和操作,实际上,新加的子类更容易获得多态功能;
3) 接口性:
多态是父类通过方法签名,向子类提供了一个共同的接口,由子类来完或覆盖它而实现的。
4) 灵活性:
它在应用中体现了灵活多样的操作,提高了使用效率;
5)简化性:
多态简化了对应用程序的代码编写和谐该过程,尤其在处理大量对象的运算和操作时,这个特点尤其突出和重要。
值得注意的是,多态并不能够解决提高执行速度的问题,因为他是基于动态绑定。
objectL类的 getclass()方法可以货期引用类型变量所引用的实际对象类型。
当多态机制导致引用变量的声明类型和实际引用对象的类型存在不一致时,
使用instanceot运算符来判断引用变量所引用的实际对象类型与某类之间的继承关系。
二、抽象
1、什么是抽象类?
使用了关键字abstract声明的类就叫做“抽象类”。如果一个雷里包含了一个或多个抽象方法,类就必须制定abstract(抽象)。“抽象方法”属于一种不完整的方法,只含有一个方法签名,没有方法主体。
2、抽象类的特点?
1)抽象类不能实例化对象;
2)如果从抽象;类继承一个类,就必须为抽象类中的所有抽象方法提供方法的定义,否则继承的类也会变成抽象类;
3)即使不包含任何abstract(抽象方法),也可以将一个类声明为“抽象类”。如果一个类没必要拥有抽象方法,而且我们想禁止那个类的所有实例,这和能力就会显得非常有用;
- Java学习 java -- 多态
- java多态
- java多态
- java多态
- java多态
- Java多态
- java多态
- JAVA@多态
- Java多态
- java 多态
- Java多态
- java多态
- [Java] 多态
- JAVA多态
- Java多态
- java多态
- java 多态
- java多态
- 排序算法之归并排序
- React Native for Android 初探
- Node.js web
- 投连险与分红险万能险区别知多点
- animation css动画
- Java 多态
- self在类方法中的使用
- 【算法C++】检测数组里是否有两个数之和等于某个数
- 如何将spring源码作为导入eclipse中,变成一个普通的项目(git、github)
- 实验1前篇——BIOS编程空间
- 关于编译原理
- PHP学习基础
- N-Queens
- 使用ASIRequest框架 封装一个专门用于数据json串获取的类