多态有什么作用,为什么一定要用多态?
多态你可以从字面上去理解,一个类表现出多种形态。它是一种编码的技巧而不是写代码的格式或者方式。 要想理解多态你需要从需求入手。
伪代码例子:void method(Father instance): instance。callmethod();现在有两个子类 girl 和 boy 。 如果我传入给method的对象是girl,那么instance。callmethod()是否就等同于girl。callmethod(),如果传入的是boy,就等同于boy。callmethod()。但是对于程序而言,表达式一直都是 void method(Father instance): instance。callmethod();没有改变过只不过通过传入不同的子类对象使这样一个表达式表现出了多种“类的形态”。这样的现象就叫做多态。
多态在软件结构设计上是非常重要的一个抽象意识
1:多态用于解决if,else 现代的编程技巧要求对于某一个函数专注于解决一类型的事情。这就要求一个函数中要尽量的避免出现>1个if,那么如果程序出现了分支而又要避免使用if应该怎么办呢。那就是多态最经常出现的场景。
2:多态用于隐藏函数的具体内容在面向对象高度结构化的开发中,软件根据功能的不同需要分为各种模块分别交给不同的人开发。那么如果同一个接口描述一类情况显然是非常高明的。最明显的例子就是大家最常用的System,out。println(Object)。初学者可能每天都在使用这样一个多态,但是却不知道这个是多态。System,out。println();无论你输入的是一个string,object,int,array,float都可以正常输出内容。为什么,因为所有的你string,Intege,array,Float都是Object的子类,根据填入参数的类型,System,out,println()就表现出了各种输出功能的形态。
多态可以通过接口和继承来实现。 一个接口可以对应多个实现 (1vN : 多态的数学描述,1个形态代表多个形态)继承:一个父类可以有多个子类 (1vN : 多态的数学描述,1个形态代表多个形态)说了这么多你还不懂的话来这里吧!
结一下:
1、编译时多态是简单的函数重载。
2、运行时多态是难点。子类重写父类函数的情况下,若父类引用指向子类方法,则执行子类方法。
3、好处是大大减少了代码量,可维护性更好。