多态你真的了解吗?

Posted

tags:

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


概念

面向对象的三大特性之一“多态”。多态表示不同的对象可以执行相同的动作,但要通过他们自己的实现代码来执行。多态首先是建立在继承的基础上的,先有继承才能有多态。多态是指不同的子类在继承父类后分别都重写覆盖了父类的方法,即父类同一个方法,在继承的子类中表现出不同的形式。多态成立的另一个条件是在创建子类时候必须使用父类new子类的方式。

例子理解

父亲是唱戏的,但是这天父亲需要让儿子代替自己去上台。这个时候

1、子类是以父类的身份上台

2、子类模仿父类的唱戏手法表演。注意这里说的是模仿,模仿也就是学的在像也不是儿子自己的方法。

3、子类自己特有的方法不可以展现出来

代码体现

有一个加减乘除的计算方法。以下是父类

//运算类
public class Operation
private double _numberA=0;
private double _numberB=0;
public double GetNumberA()
return _numberA;

public void SetNumberA(double NumberA)
_numberA=NumberA;

public double GetNumberB()
return _numberB;

public void SetNumberA(double NumberB)
_numberA=NumberB;

public double GetResult()
double result=0;
return result;

子类继承父类

//加法类
public class OperationAdd extends Operation
@override
public double GetResult()
return super.GetNumberA()+super.GetNumberB();



//减法类
public class OperationSub extends Operation
@override
public double GetResult()
return super.GetNumberA()-super.GetNumberB();

多态的体现是在父类的引用指向子类的 对象

//简单工厂类
public class OperationFactory
public static Operation createOperate(String operate)
Operation oper=null;
switch (operate)
case "+"
oper=new OperationAdd();
break;
case"-"
oper=new OperationSub();
break;

return oper;

 

简单总结:多态的前提是建立在继承之上的,父类需要有一个虚拟的方法(虚方法),子类去重写父类的方法,也就是父类的引用指向子类的对象,Animal animal=new Cat();

以上是关于多态你真的了解吗?的主要内容,如果未能解决你的问题,请参考以下文章

你真的了解JavaScript吗

类加载机制你真的了解吗?

你真的了解IP地址吗?

你真的了解UIScrollView吗?

你真的了解数据分析吗?

并发编程大师系列之:你真的了解ThreadLocal吗?