如果敌人可以让你生气,那么就代表你还没有胜他的把握
首先我想吐一下槽,我想了解一下多态,网上的相关技术文档,花里胡哨的,简单的,打着解答的旗号骗鬼子的
我看完这些文章我无语了,这…,我既然来查这个东西,就代表我不太懂,结果就这,一顿花里胡哨的操作看的我头皮发麻,好不容易有些头绪的我,被这些玩意冲的一干二净;我现在口中积攒了几十年的脏话,我恨不得全部吐他们脸上!!
算了,这毕竟是一篇技术文档,多态作为面向对象的特征之一,对于新手小白来说,这玩意理解起来就像鸡蛋明明是圆的,他非要让我们抽象的理解为方的,不仅如此,他的功能从之前的孵化小鸡直接变成了一直鸡,简直抽象的不得了,面对抽象,我们就要用抽象去理解
那到底什么是多态呢?
首先看这篇文章,必须对重写、继承有一定的基础,要不然肯定看不懂,你们可以看看我之前写的,也可以去看看别人的
注意,这篇文章只是为了帮助人了解什么是多态,以及多态的作用,至于想用多态干其他东西的,直接关电脑
多态就是指同一种事物,有多种形态
我们就拿法外狂徒张三来讲,张三很有钱,因为啥有钱呢?因为张三的爸爸有钱,张三继承了他爸爸的财产;
但是张三还有一个亲生兄弟叫李四,李四同样也继承了他爸的财产,OK,现在我们需要记好以下:
张三有一辆自行车
李四有一辆电瓶车
那张三李四的爸爸呢,有一辆三轮车;
那我们抽象的理解一下,假如你想要找这一家人借一辆车去玩,那借什么车呢?你也不知道,但是你需要去看一下啊,看骑哪个车帅,你骑哪个;
但是我们找车,一个一个人的找车,太麻烦了,我们直接去找张三的爸爸,因为张三和李四的车都是从他那里继承的,他肯定知道什么车帅;
如果我们只找张三,首先我们要在测试类中new一个张三的对象,然后告诉张三把你的车调给我,然后张三就调给你了,突然你又觉得李四的车比较帅,你又得去找李四,new一个李四,李四给你调;
但是你直接找张三的父亲,张三的父亲,什么车都可以调
以上的所有信息都只是为了让你们抽象的理解,不作为教学参考,你们阅读完刚刚那个童话故事,我们现在上代码,我会选择最简单的代码,给你们讲解多态,不整那些花里胡哨的
创建以下四个类:
父类,张三类,李四类,测试类
//父类public class Fu {}
//张三类public class ZS {}
//李四类public class LS {}
//测试类public class Test {}
首先让张三和李四继承父类
//李四类public class LS extends Fu{}
//张三类public class ZS extends Fu{}
然后我们刚刚说了,张三的爸爸为什么可以调用张三和李四的车,因为他是张三老子,
那此时我们的子类以及继承了父类,是不是父类以及可以调用子类了?这里我们需要使用方法的重写,首先我们在父类写入三轮车的方法
//父类public class Fu {public void che(){System.out.println("父类的三轮车");}}
然后我们在子类中重写父类中的che方法(方法名和参数必须一模一样)
//李四类//李四类public class LS extends Fu{@Overridepublic void che() {System.out.println("李四的电动车");}}
//张三类public class ZS extends Fu{@Overridepublic void che() {System.out.println("张三的自行车");}}
现在我们父类和张三、李四各有一个方法,这个方法是重写父类的,这个也是我们多态实现的重要桥梁
那我们之前想获得张三的的方法,还怎么获得?
肯定是这样,那我们像调用李四的呢?
以上就是用创建对象来调用的,
那么如何通过父类来调用呢?
写一个add的静态方法,我们需要对张三和李四进行调用,该怎么调用?
此时,我们把ZS的对象传入进去,发现根本传入不了,运行不出效果
那时因为第一,我们是想通过父类调取子类,还有就是,张三这个对象并没有赋值到我们的静态方法内
所以:
写一个add的静态方法,方法内有一个参数,Fu代表的是指编译时,是在父类运行的,fu这个就是普通的变量,用来接收子类对象的;
随后我们把张三或李四的对象传到静态方法的fu内
在静态方法内,由于我们的fu已经获得了李四的对象,我们直接调用方法就可以了
我们想调用张三的,我们就直接改add方法传入的对象就可以了
虽然效果达到了,但是我们要写的严谨点,把new的张三李四对象前面的编译区设置成父类,就可以了
那这时我们就可以知道,是由父类调用的子类属性,就这Fu ls = new LS();一段代码,我们就可理解成多态
我们通过父类的一种方法
通过重写,完成了一种方法可以有多种形态,这种形式,就称作多态,万变不离其宗,多看多写多练,方可成神;
最后的最后,来一张心灵净化图,缓解神经疲劳