面向对象——多态

简介: 面向对象——多态

1. 多态概念


      多态是面向对象程序设计(OOP)的一个重要特征,指同一个实体同时具有多种形式,即同一个对象,在不同时刻,代表的对象不一样,指的是对象的多种形态。


可以把不同的子类对象都当作父类来看,进而屏蔽不同子类对象之间的差异,写出通用的代码,做出通用的编程,统一调用标准。


多态的主要用途


1、提高程序的可扩展性;

2、降低系统耦合度;

3、提高系统的可维护性。


示例


      结合大话设计模式,第9页-第11页的代码,通过简单工厂模式实现计算器小程序,深刻理解面向对象的多态。

Operation-运算类


public class Operation
    {
        private double _numberA = 0;
        private double _numberB = 0;
        public double NumberA
        {
            get { return _numberA; }
            set { _numberA = value; }
        }
        public double NumberB
        {
            get { return _numberB; }
            set { _numberB = value; }
        }
        public virtual double GetResult()
        {
            double result = 0;
            return result;
        }
     }


OperationFactory-简单运算工厂类


class OperationFactory
    {
        public static Operation createOperate(string operate)
        {
            Operation oper=null;
            switch (operate)
            {
                case "+":
                    oper = new OperationAdd();
                    break;
                case "-":
                    oper=new OperationSub();
                    break;
                case "*":
                    oper=new OperationMul();
                    break;
                case "/":
                    oper=new OperationDiv();
                    break;
            }
            return oper;
        }
     }


OperationAdd-加法类


class OperationAdd:Operation
    {
        public override double GetResult()
        {
            double result = 0;
            result = NumberA + NumberB;
            return result;
        }
    }


OperationSub-减法类


public class OperationSub:Operation
    {
        public override double GetResult()
        {
            double result = 0;
            result = NumberA + NumberB;
            return result;
        }
    }


OperationMul-乘法类


class OperationMul:Operation
    {
        public override double GetResult()
        {
            double result = 0;
            result = NumberA + NumberB;
            return result; 
        }
    }


OperationDiv-除法类


class OperationDiv:Operation
    {
        public override double GetResult()
        {
            double result = 0;
            if (NumberB==0)
            {
                throw new Exception("除数不能为0.");
            }
            result = NumberA + NumberB;
            return result;
        }
    }


客户端代码


 Operation oper;
    oper = OperationFactory.createOperate("+");
    oper.NumberA = 1;
    oper.NumberB = 2;
    double result = oper.GetResult();
    Console.WriteLine(result);


   根据代码可知,Operation类是父类,加减乘除是Operation的子类。在各个子类中重写了父类中的GetResult方法,对于父类的同一个方法,各个子类有不同的实现,符合多态的概念。

目录
相关文章
|
存储 Java 编译器
初识面向对象(类和对象)
初识面向对象(类和对象)
82 0
|
4月前
什么是多态?面向对象中对多态的理解
本文介绍了面向对象编程中的多态概念,包括其定义、优点以及编译时多态和运行时多态的具体实现方式。通过实例展示了函数重载、运算符重载、虚函数、接口和抽象类的应用,帮助读者深入理解多态的灵活性和可扩展性。
365 6
|
6月前
|
算法 Java 程序员
类和对象 | 面向过程与面向对象的初步认识
类和对象 | 面向过程与面向对象的初步认识
78 5
|
8月前
|
存储 C++ C语言
【C++语言】初步认识面向对象编程&&类和对象(上)
【C++语言】初步认识面向对象编程&&类和对象(上)
理解面向对象——多态
理解面向对象——多态
105 0
|
9月前
对面向对象编程的理解,面向过程和面向对象有什么区别
对面向对象编程的理解,面向过程和面向对象有什么区别
99 0
面向对象之多态2
面向对象之多态2
55 0
|
9月前
面向对象编程的理解,面向过程和面向对象有什么区别
面向对象编程的理解,面向过程和面向对象有什么区别
82 0