面向对象之多态

Posted mb62c3ac8538829

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了面向对象之多态相关的知识,希望对你有一定的参考价值。


 

/*
*作者:呆萌老师
*☑csdn认证讲师
*☑51cto高级讲师
*☑腾讯课堂认证讲师
*☑网易云课堂认证讲师
*☑华为开发者学堂认证讲师
*☑爱奇艺千人名师计划成员
*在这里给大家分享技术、知识和生活
*各种干货,记得关注哦!
*/

面向对象之多态_向上转型

1、什么是多态

        多态是我们可以创建在不同变成上下文中行为不同的方法或者引用的能力。其简而言之就是调用同一种方法却呈现不同的状态。

        在面向对象中多态与封装,继承并称为面向对象的三大特性。

2、多态的产生

        是因为由于方法重载/覆盖使得我们的方法的实现发生了改变,但是我们的标识符却没变,因此产生了多态。

3、Java中的多态

        在Java中多态可以分为运行时多态与编译时多态。

        编译时多态:方法重载时参数的静态数据绑定。通过方法重载实现控制流由编译时本身决定的一种方式。

        运行时多态:通过继承实现方法覆盖使得数据动态绑定。

package next.overrideinextends;
public class GrandFather
public void eatPotato()
System.out.println("Be careful! The potato is sooo hot!");


class Father extends GrandFather
@Override
public void eatPotato()
System.out.println("Nice!");


class Son extends Father
@Override
public void eatPotato()
System.out.println("Nice!");


class Output
public static void main(String[] args)
GrandFather gf = new GrandFather();
GrandFather f = new Father();
GrandFather s = new Son();
s.eatPotato();
f.eatPotato();
gf.eatPotato();


面向对象之多态_向上转型_02

运行结果:

面向对象之多态_向上转型_03


面向对象之多态_向上转型_04

编辑

 4、向上转型的特点

        ①向上转型其实就是将子类的内容赋值给父类。

        ②若子类在父类的基础上做了方法扩展,则子类扩展的功能将无法被父类调用。

        ③子类若是对父类的方法重写了,则向上转型后,父类调用该方法将不再执行父类的内容而是执行子类的内容。

        

5、向上转型的好处

        向上转型实现了引用的类型统一以及传递参数的统一。

public class GrandFather 
public void eatPotato()
System.out.println("Be careful! The potato is sooo hot!");


class Father extends GrandFather
@Override
public void eatPotato()
System.out.println("Nice!");


class Son extends Father
@Override
public void eatPotato()
System.out.println("Nice!");


class Output
public void aVoid(GrandFather f)
f.eatPotato();

public static void main(String[] args)
GrandFather gf = new GrandFather();
GrandFather f = new Father();
GrandFather s = new Son();
Output output=new Output();
output.aVoid(gf);
output.aVoid(f);
output.aVoid(s);


面向对象之多态_向上转型_05

更多关注

​https://edu.51cto.com/course/20203.html​

以上是关于面向对象之多态的主要内容,如果未能解决你的问题,请参考以下文章

15:面向对象三大特性(封装继承多态)之多态

面向对象之多态

java学习笔记之面向对象多态

Python--面向对象之多态与多态性

Java面向对象之多态

Java面向对象之多态