JavaEE程序猿之你不知道的多态的玩法(21)

面向对象三大特性,today我们来看看多态;多态显而易见就是多种形态;
所谓多种形态,竹迩想到了一个画面:星爷在《唐伯虎点秋香》中大叫一声美女:
JavaEE程序猿之你不知道的多态的玩法(21)_第1张图片
这就是美女的多态;
我们先来看看学友们提供的什么叫多种形态;
NO1:脸萌
JavaEE程序猿之你不知道的多态的玩法(21)_第2张图片
NO2:老公
JavaEE程序猿之你不知道的多态的玩法(21)_第3张图片
NO3:垃圾

JavaEE程序猿之你不知道的多态的玩法(21)_第4张图片
以上都是多态的体现,说简单点就是一个名字可以代表多种不同形态的物品;
那多态在Java中是如何实现的呢?有两种方式,继承和实现接口;我们先以继承为例来讲解;
所谓继承,我老子有的儿子也拥有,所以使用使用老子也能指向儿子从老子那里继承下来的属性和行为;
以老公为例,作为颜控,必须以老公为例:
每一个老公,都有眼睛,鼻子,他美不美丽……
JavaEE程序猿之你不知道的多态的玩法(21)_第5张图片
现在我们来修改一下:

JavaEE程序猿之你不知道的多态的玩法(21)_第6张图片
当我们调用描述这个方法的时候:
JavaEE程序猿之你不知道的多态的玩法(21)_第7张图片

我们所写的代码老公.描述()是来自该引用变量是否有调用的方法,也就是如果老公类中没有描述这个方法,代码会编译报错;
但是在运行过程中,又会对应到宋仲基和胡歌的描述方法;运行结果如下:


这就是所谓编译期状态和运行期状态的问题了;
以下是孟小灰童鞋的专业解释,能理解到大神的思维吗?
首先把人看成一个类      超人也继承了人类这个类  对吧     所以他不变身的时候  可以假装成普通人类不被发现  所以当我们的超人向上转型成普通人类的时候  我们的编译器  就像不明真 相的吃瓜群众
JavaEE程序猿之你不知道的多态的玩法(21)_第8张图片
认为超人就是一个普通的人类  他不会飞的方法 也不会有力大无穷这个属性     所以当你叫超人去飞的时候  编译器就会喷你   说大哥你是不是傻  这个人怎么会飞呢  所以它就一直喷你  告诉你 你错了   你写错了
JavaEE程序猿之你不知道的多态的玩法(21)_第9张图片
然后   超人和人是不是都可以移动这个方法     但是具体方式不一样   超人是飞   人类嘛   开车走路呗     所以当你告诉编译器  让超人去超市买个菜  编译器认为就是开车走路去  但是呢  实际上超人是飞过去的    所以表面上你是调用的人类移动的方法  但是超人有自己的移动方法实现   他是飞过去的~~~~

你可能感兴趣的:(javaee,知了堂Java,知了堂,知了堂竹迩,知了堂Java就业班,java)