网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

继上一篇代码向上转型实现多态

static class Program
 {
     /// 
     /// 应用程序的主入口点。
     /// 
     [STAThread]
     static void Main()
     {
         OptertorAdd op = new OptertorAdd();
         op.GetResult(1, 2);
     }
 }

 /// 
 /// 父类 Created:ChenHu  date:2013326
 /// 
 public class Opreator
 {
     //不想暴漏在外的私有变量可以用属性封装起来
     private double _numA;
     private double _numB;

     public double NumA
     {
         get { return _numA; }
         set { _numA = value; }
     }

     public double NumB
     {
         get { return _numB; }
         set { _numB = value; }
     }

     public virtual double GetResult(int a, int b)
     {
         double result = 0;
         //------------------------------------------
         //TODO:可以处理需要影藏的逻辑,这也是new或则说虚方法隐藏的逻辑的一种手段,隐藏的逻辑可以是员工的薪资计算等保密操作
         //------------------------------------------
         result = _numA + _numB;
         return result;
     }
 }

 /// 
 /// 派生类  Created:ChenHu  date:2013326
 /// 
 class OptertorAdd : Opreator
 {
     public override double GetResult(int a, int b)
     {
         //这里base的逻辑可以放在自己逻辑之前也可以放在自己逻辑的后面
         //这里的位置其实很有讲究哦,逻辑不对可能会引起报错。
         //如把base逻辑放在自己逻辑之前,在父类中 _numA + _numB=0;因为你还没赋值
         base.GetResult(a, b);
         NumA = a;
         NumB = b;
         double result = 0;
         result = NumA + NumB;
         //父类逻辑在此位置  _numA + _numB=3;
         //base.GetResult(a, b);
         return result;

     }
 }


 /// 
 ///首先创建一个工厂,这里我们通过向上转型实现多态
 ///这里我们试用静态字段的原因就是:
 ///这个类可能调用的次数很大,我们最好让其闲在内存加载好
 /// 
 /// 
 /// 可以这样理解多态:一个卖猪肉的爹生了好几个儿子(儿子都具有爹的基因此为继承),
 /// 每个儿子的工作都不一样,有卖西瓜的卖土豆的,这个时候,
 /// 如果爹想吃西瓜了就会找到卖西瓜的儿子要,如果想吃土豆也是一样的。如果想吃猪肉,
 /// 但是没有卖肉的儿子怎么办呢? 呵呵 生一个卖猪肉的儿子就行了,虽然有点夸张,但是这是多态的本质。
 /// 
 public static class OptetaionFactory
 {
     /// 
     /// Frank 2013327
     /// 
     /// 计算符号,根据不同的符号返回不同的计算类实体
     /// 计算类
     public static Opreator OptertCreate(String oper)
     {
         Opreator opretaor = null;
         switch (oper)
         {
             case "+":
                 //向上转型:子类->父类
                 opretaor = new OptertorAdd();
                 break;
                 //TODO:这里可以根据需要然后从父类派生出更多的子类实例:这就是多态了
         }
         return opretaor;
     }
 }

文章标题:继上一篇代码向上转型实现多态
当前路径:http://bjjierui.cn/article/gpdjcc.html

其他资讯