目录
什么是多态?
概念:多态是指同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。简单的说:就是用基类的引用指向子类的对象。
为什么要有多态?
首先。要了解面向对象的三大特性 ,其一封装可以隐藏实现具体细节,使得代码模块化;其二继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而其三多态除了代码的复用性外,还可以解决项目中紧偶合的问题,提高程序的可扩展性.。耦合度讲的是模块模块之间,代码代码之间的关联度,通过对系统的分析把他分解成一个一个子模块,子模块提供稳定的接口,达到降低系统耦合度的的目的,模块模块之间尽量使用模块接口访问,而不是随意引用其他模块的成员变量。
实现多态
运算类
public class Operation
{
private double _numberA = 0;
private double _numberB = 0;
/// 数字A
public double NumberA
{
get
{
return _numberA;
}
set
{
_numberA = value;
}
}
/// 数字B
public double NumberB
{
get
{
return _numberB;
}
set
{
_numberB = value;
}
}
/// 得到运算结果
public virtual double GetResult()
{
double result = 0;
return result;
}
加法类
class OperationAdd : Operation
{
public override double GetResult()
{
double result = 0;
result = NumberA + NumberB;
return result;
}
}
减法类
class OperationAdd : Operation
{
public override double GetResult()
{
double result = 0;
result = NumberA + NumberB;
return result;
}
}
简单工厂类
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;
}
}
客户端
static void Main(string[] args)
{
Operation oper;
oper = OperationFactory.createOperate("+");
oper.NumberA = 1;
oper.NumberB = 2;
double result = oper.GetResult();
Console.WriteLine(result);
}
自我理解
多态不仅提高了代码的复用性,也大大提高了扩展性,并且符合开闭原则。