java中是怎么实现多态的 什么是多态?java中如何实现多态?
什么是多态?java中如何实现多态?
多态性分为编译时多态性和运行时多态性。
1.编译时多态性实际上是一种函数名相同但签名不同的方法重载。值得注意的是,签名不包括方法返回值。换句话说,两个方法有相同的函数名和参数,但返回值不同,编译器返回错误。
2.运行时多态性实际上与继承和接口实现有关。子类可以重写父类的非最终、非静态、非私有方法,或者实现接口方法。在运行时,将实例动态绑定到父类或接口的引用,那么jvm如何知道调用哪个子类的实例的对应方法呢?这是你问的问题。在——Java中,对象在jvm中有描述元数据。对象头和当前实例的类型信息存储在对象头中。调用时,jvm可以根据这个类型准确地找出使用哪个子类方法。
什么是多态?java中如何实现多态?
百度搜索圈T社区免费行业视频教程
多态性意味着重载和重写。重载发生在一个类中。重写发生在子类中,这意味着子类重写了父类的相同名称。你不用那么清楚自己刚学了一门语言是什么,知道怎么用就行了。要想真正理解一些问题,短时间内是不可能的,比如接口。没有几年的工作经验,你是无法真正理解什么是接口的,甚至有些人工作了四五年都没搞清楚。
重载的功能具有相同的方法名。返回的类型有不同的参数(包括数字和类型)。
重写具有相同的特征、方法名、返回类型和参数,并且必须出现在子类中。
该语言允许某种类型的引用变量引用子类的实例,并可以对该引用变量进行类型转换。
animal animal=new Dog() //引用变量Animal引用一个Animal子类Dog的实例。
Dog Dog=(Dog)Animal //将动物类型转换为狗类型。
生物创造=动物//向上转化,将动物型转化为创造型。
Animal=new Cat() //引用变量Animal引用另一个animal子类Cat的实例。
注:这里的生物是指生物。
2.如果引用变量转换为子类类型,则称为向下转换;如果引用变量被转换为父类类型,则称为向上转换。
3.在转换参考变量的类型时,会有各种限制。而且在通过引用变量访问它所引用的实例的静态属性、静态方法、实例属性、实例方法,以及从父类继承的方法和属性时,Java虚拟机采用了不同的绑定机制。
4.成员变量和静态方法根据引用变量声明的类型进行静态绑定;实例方法是根据引用变量引用的实例动态绑定的。
例如,对于以下代码:
父亲f=新儿子()
(quot;quot; )
(quot;quot; )
()
()
运行时将输出以下结果:
儿子法
静态父方法
班级父亲{
字符串变量=
什么是多态?java中如何实现多态?
如果父类指针指向子类对象,那么它就是多态的。
比如A是父类,B和C都继承自A。
B b=新B()
所以A a=b
它是多态的。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。