面向对象中多态的理解

简介: 面向对象中多态的理解

面向对象三大特征:封装、继承、多态。

今天,我们来了解一下多态。

什么是多态

多态指同一个实体同时具有多种形式,指为不同数据类型的实体提供统一的接口。它是面向对象程序设计(OOP)的一个重要特征。

eg:品鉴师要品菜,一号厨师煮出了淮扬菜,二号厨师炒了东北菜。

多态的好处

主要是利于代码扩展

多态的类型

分为运行时的多态和编译时的多态

运行时的多态:通过覆写虚成员实现。直到系统运行时,才根据实际来决定实现哪种操作

编译时的多态:通过重载来实现。根据传递的参数、返回的类型等信息决定实现何种操作

结合设计模式

运算类(父类)

    public class Operation
    {
        private double _numberA = 0;
        private double _numberB = 0;
        /// <summary>
        /// 数字A
        /// </summary>
        public double NumberA
        {
            get
            {
                return _numberA;
            }
            set
            {
                _numberA = value;
            }
        }
        /// <summary>
        /// 数字B
        /// </summary>
        public double NumberB
        {
            get
            {
                return _numberB;
            }
            set
            {
                _numberB = value;
            }
        }
        /// <summary>
        /// 得到运算结果
        /// </summary>
        /// <returns></returns>
        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 OperationSub : 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;
    }
}

main程序

static void Main(string[] args)
{
    Operation oper;
    oper = OperationFactory.createOperate("+");//通过简单工厂创建对象
    oper.NumberA = 1;
    oper.NumberB = 2;
    double result = oper.GetResult();
    Console.WriteLine(result);
}

所以通过上面的例子得出多态实现机制主要表现:在父类和继承该父类的一个或多个子类对某些方法的重写,多个子类对同一方法的重写可以表现出不同的行为。

相关文章
|
5月前
|
存储 Java 编译器
初识面向对象(类和对象)
初识面向对象(类和对象)
46 0
|
2天前
|
存储 编译器 C++
C++类和对象的多态性
C++类和对象的多态性
7 0
C++类和对象的多态性
|
2天前
|
存储 C++
C++类与对象【多态】
C++类与对象【多态】
|
10月前
理解面向对象——多态
理解面向对象——多态
57 0
|
10月前
面向对象之多态2
面向对象之多态2
37 0
面向对象中的多态简单理解
面向对象中的多态简单理解
|
8月前
|
Java
Java面向对象之多态
Java面向对象之多态
40 0
|
9月前
|
存储 编译器 C++
C++ 面向对象三大特性——多态
面向对象三大特性的,封装,继承,多态,今天我们研究研究C++的多态。
|
9月前
|
安全 Java 编译器
多态的学习
多态的学习
36 0