.Net学习笔记----2015-07-21(C#基础复习06,多态复习)

多态

1、虚方法  virtual

2、抽象类  abstract

面向对象计算器 案例:

    class Program
    {
        static void Main(string[] args)
        {
            //实现多态:虚方法、抽象类、接口
            //简单工厂实现简单计算器效果
            while (true)
            {
                Console.WriteLine("请输入第一个数字");
                double n1 = Convert.ToDouble(Console.ReadLine());
                Console.WriteLine("请输入第二个数字");
                double n2 = Convert.ToDouble(Console.ReadLine());
                Console.WriteLine("请输入运算符");
                string opera = Console.ReadLine();
                OperaFather opf = GetOpera(opera, n1, n2);
                double res = opf.GetResult();
                Console.WriteLine(res);
            }
            Console.ReadKey();
        }

        public static OperaFather GetOpera(string opear,double n1, double n2)
        {
            OperaFather opf = null;
            switch(opear)
            {
                case "+": opf = new Add(n1,n2);
                    break;
                case "-": opf = new Sub(n1, n2);
                    break;
                case "*": opf = new Cheng(n1, n2);
                    break;
                case "/": opf = new Chu(n1, n2);
                    break;
            }
            return opf;
        }
    }
    public abstract class OperaFather
    {
        public OperaFather(double n1, double n2)
        {
            this.NumberOne = n1;
            this.NumberTwo = n2;
        }
        public double NumberOne
        { get; set; }
        public double NumberTwo
        { get; set; }

        public abstract double GetResult();
    }
    class Add : OperaFather
    {
        public Add(double n1, double n2)
            : base(n1, n2)
        {

        }
        public override double GetResult()
        {
            return this.NumberOne + this.NumberTwo;
        }
    }
    class Sub : OperaFather
    {
        public Sub(double n1, double n2)
            : base(n1, n2)
        {

        }
        public override double GetResult()
        {
            return this.NumberOne - this.NumberTwo;
        }
    }
    class Cheng : OperaFather
    {
        public Cheng(double n1, double n2)
            : base(n1, n2)
        {

        }
        public override double GetResult()
        {
            return this.NumberOne * this.NumberTwo;
        }
    }
    class Chu : OperaFather
    {
        public Chu(double n1, double n2)
            : base(n1, n2)
        {

        }
        public override double GetResult()
        {
            return this.NumberOne / this.NumberTwo;
        }
    }
时间: 2024-10-13 16:05:07

.Net学习笔记----2015-07-21(C#基础复习06,多态复习)的相关文章

Linux学习笔记——2015/7/21

4.1.4 Linux常用命令-文件处理命令-链接命令 ln 生成链接文件 -s创建软链接 软链接:类似Windows快捷方式 注: 生成软链接文件  l开头   所有权限都是3个 rws 硬链接:   不能跨分区.不能针对目录使用.通过i节点识别 用户分三类 u g o 权限分三类 读 写 4.2.1 Linux常用命令-权限管理命令-权限管理命令chmod chmod  改变文件或目录权限 执行权限:所有用户.管理员root 语法:chmod [{ugoa}{+-=}{rwx}][文件或目录

【Ext.Net学习笔记】07:后续

程序员必看书籍(转载) C++: Prata<C++ Primer Plus>:基础,第一本书.(之前的版本也可,不过推荐最新的) Lippman<Inside C++ Object Model>:初级,加深语言层次上的理解.不过有点小老了.里面的cfront编译器早退出江湖好久了.思想值得学习 侯捷<STL源码剖析>:第三本书,中级,深入STL Vandevoorde<C++ Template>:第四本,中级,范式编程 罗剑锋<Boost>两本

APUE学习笔记:第一章 UNUX基础知识

1.2 UNIX体系结构 从严格意义上,可将操作系统定义为一种软件(内核),它控制计算机硬件资源,提供程序运行环境.内核的接口被称为系统调用.公用函数库构建在系统调用接口之上,应用软件即可使用公用函数库,也可使用系统调用.shell是一种特殊的应用程序,它为运行其他应用程序提供了一个接口 从广义上,操作系统包括了内核和一些其他软件,这些软件使得计算机能够发挥作用,并给予计算机以独有的特性(软件包括系统实用程序,应用软件,shell以及公用函数库等) 1.3  shell shell是一个命令行解

Linux 程序设计学习笔记----终端及串口编程基础之概念详解

转载请注明出处,谢谢! linux下的终端及串口的相关概念有: tty,控制台,虚拟终端,串口,console(控制台终端)详解 部分内容整理于网络. 终端/控制台 终端和控制台都不是个人电脑的概念,而是多人共用的小型中型大型计算机上的概念. 1.终端 一台主机,连很多终端,终端为主机提供了人机接口,每个人都通过终端使用主机的资源. 终端有字符哑终端和图形终端两种. 控制台是另一种人机接口, 不通过终端与主机相连, 而是通过显示卡-显示器和键盘接口分别与主机相连, 这是人控制主机的第一人机接口.

nodejs学习笔记_nodejs和PHP在基础架构上的差别--共享状态的并发

绝大多数对于Node.js的讨论都把关注点放在了处理高并发能力上,做开发的时候一定要明确node内部做出的权衡,以及node应用性能好的原因. node 为javascript引入了一个复杂的概念,:共享状态的并发. node採用一个长期执行的进程 而php在apache中会产生多个进程 例如以下图所看到的: 代码验证: PHP: <?php $i = 0; $i++; echo $i nodejs: var http = require('http'); var i=0; http.creat

Swift学习笔记(一):基础

一.常量 & 变量 //常量 let constantsTeam = 1 //变量 var variablesTeam = 2 尽可能使用常量,这样更清晰并且内存更不容易肾亏. 二.显示/隐式指定类型 //隐式 let inferredTeam = 3 //显式 let explicitTeam:Int = 4 三.字符串输出 //通过\(变量或常量名)来引用组合字符串 println("\(inferredTeam) is bigger than \(variablesTeam)!&q

Node.js学习笔记【3】NodeJS基础、代码的组织和部署、文件操作、网络操作、进程管理、异步编程

一.表 学生表 CREATE TABLE `t_student` ( `stuNum` int(11) NOT NULL auto_increment, `stuName` varchar(20) default NULL, `birthday` date default NULL, PRIMARY KEY  (`stuNum`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 学生分数表 CREATE TABLE `t_stu_score` ( `id` int(11

nodejs学习笔记_nodejs和PHP在基础架构上的区别--共享状态的并发

绝大多数对于Node.js的讨论都把关注点放在了处理高并发能力上,做开发的时候一定要明白node内部做出的权衡,以及node应用性能好的原因. node 为javascript引入了一个复杂的概念,:共享状态的并发. node采用一个长期运行的进程 而php在apache中会产生多个进程 如下图所示: 代码验证: PHP: <?php $i = 0; $i++; echo $i nodejs: var http = require('http'); var i=0; http.createSer

Murano Weekly Meeting 2015.07.21

会议时间: 2015.07.21 主持人: Kirill Zaitsev, core from Mirantis 会议摘要:  1.murano client和murano dashboard升级到yaql1.0.    slagun负责与mistral协调yaql1.0的升级问题,mistral需要一起升级. 2.OpenStack各个项目与olso的接口人. Project Liaison IRC Handle Cinder Jay Bryant jungleboyj Heat Thomas

C++ Primer 学习笔记_34_面向对象编程(5)--虚函数与多态(二):纯虚函数、抽象类、虚析构函数、动态创建对象

C++ Primer 学习笔记_34_面向对象编程(5)--虚函数与多态(二):纯虚函数.抽象类.虚析构函数.动态创建对象 一.纯虚函数 1.虚函数是实现多态性的前提 需要在基类中定义共同的接口 接口要定义为虚函数 2.如果基类的接口没办法实现怎么办? 如形状类Shape 解决方法 将这些接口定义为纯虚函数 3.在基类中不能给出有意义的虚函数定义,这时可以把它声明成纯虚函数,把它的定义留给派生类来做 4.定义纯虚函数: class <类名> { virtual <类型> <函