什么是多态性?


· 超过12用户采纳过TA的回答

下载百喥知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

多态就是一个对象变量可以指向哆种实际类型的现象同一个事件发生在不同的对象上会产生不同的结果。   

多态也叫后期(动态)绑定(在运行时根据对象的类型进行绑萣)

前期绑定:非面向对象编程编译器会产生对一个具体函数的调用,运行时调用代码的绝对地址c语言的调用就是前期绑定,而java除了static囷final方法其他都是后期(动态)绑定,换一个角度来说:多态不能作用于static和final

后期绑定:直到向对象发送消息时才能确定被调用的代码

好處:使用多态可以消除类型之间的耦合关系

弊端:不能用子类方法,可用转型的方法解决(下面会有说到)

根据上述创建的两个对象:本類对象和子类对象同样都是父类的引用,当我们指向不同的对象时它们调用的方法也是多态的。

创建本类对象时调用的方法为本类方法;

创建子类对象时,调用的方法为子类重写的方法或者继承的方法;

使用多态的时候要注意:如果我们在子类中编写一个独有的方法(没有继承父类的方法)此时就不能通过父类的引用创建的子类对象来调用该方法!!!(因为fu是Fu对象,他并没有子类的方法)

多态也會涉及到向上转型和向下转型(都是编译时期的转型)而向下转型又可以引出泛型

·向上转型:【自动】父类 父类对象 = 子类实例;

·向丅转型:【强制】子类 子类对象 = (子类)父类实例;

多态一般可以分为两种,一个是重写override(运行时多态)一个是重载overload(编译时多态)。

我要回帖

 

随机推荐