继承概念
  多态:即一个接口,多个功能
  同一种操作作用于不同的对象,可以有不同的解释,产生不同的执行结果
  多态性可以是静态的或动态的。在静态多态性中,函数的响应是在编译时发生的。在动态多态性中,函数的响应是在运行时发生的

静态多态性
  在静态多态性中,函数的响应是在编译时发生的
  父类中如果有方法需要子类重写,可以将该方法标记为虚方法
  虚方法必须在父类中有实现,空实现也可以
  虚方法子类可以重写,也可以不重写
  实现静态多态性有两种方法;
    函数重载
    运算符重载

  函数重载
    即在同一范围中对同一函数名的多重定义
    通过定义函数的传参的不同类型或数量进行区分
    在调用函数时,根据传的参数类型和数量判断调用名字相同的那个方法 

 using System;

 namespace 函数重载
{
class printdata
{
void print(int i)
{
Console.WriteLine("printing int: {0}", i);
} void print(double f)
{
Console.WriteLine("printing folat: {0}", f);
} void print(string s)
{
Console.WriteLine("printing string: {0}", s);
} static void Main(string[] args)
{
printdata p = new printdata(); // 调用 print 来打印整数
p.print(); // 调用 print 来打印浮点数
p.print(234.643); // 调用 print 来打印字符串
p.print("Hello Tynam"); Console.ReadKey(); }
}
}

    运行结果

·    

  运算符重载
    重定义或重载C#中内置的运算符
    通过关键字operator加运算符的符号来定义
    与其他函数一样,重载运算符有返回类型和参数列表    

 using System;

 namespace 运算符重载
{
class Complex
{
public int x;
public int y;
public int z;
public Complex(int x, int y, int z)
{
this.x = x;
this.y = y;
this.z = z;
} public static Complex operator+(Complex v1,Complex v2)
{
return new Complex(v1.x + v2.x,v1.y + v2.y,v1.z + v2.z);
} public static Complex operator /(Complex v1, Complex v2)
{
return new Complex(v1.x / v2.x, v1.y / v2.y, v1.z / v2.z);
}
} class Program
{
static void Main(string[] args)
{
Complex v1 = new Complex(,,);
Complex v2 = new Complex(,,);
Complex v3 = v1 + v2;
Complex v4 = v1 / v2;
Console.WriteLine("x is {0} ; y is {1} ; z is {2}", v3.x, v3.y, v3.z);
Console.WriteLine("x is {0} ; y is {1} ; z is {2}", v4.x, v4.y, v4.z);
Console.ReadKey();
}
}
}

  运行结果

  

    可重载和不可重载运算符
      可以被重载的一元运算符:+、 -、 !、~、++、--
      可以被重载的二元运算符:+、 -、 *、 /、 %
      可以被重载的比较运算符:==、!=、<、>、<=、>=
      不能被直接重载的条件逻辑运算符:&&、||
      不能被重载的赋值运算符:+=、-=、*=、/=、 %=
      不能被重载的其他运算符:=、 .、 ?:, ->、 new、 is、sizeof、typeof

动态多态性
  在动态多态性中,函数的响应是在运行时发生的
  使用关键字abstract创建抽象类,用于提供接口的部分类的实现
  当一个派生类继承自该抽象类时,实现即完成
  抽象类包含抽象方法,抽象方法可被派生类实现
  抽象方法不允许有方法体的
  当一个子类继承抽象类时,必须把父类的所有抽象成员都重写;若子类也是一个抽象类,可以不写
  子类重写父类的方法,参数和返回值必须跟父类一样
  抽象方法不能用static修饰
  抽象类是有构造函数的,虽然不能被实例化
  抽象类标记abstract,不能有任何实现,不能有方法体

 using System;

 namespace 动态多态性
{
abstract class Shape
{
public abstract int area();
} class Rectangle : Shape
{
private int length;
private int width; public Rectangle(int a = , int b = )
{
length = a;
width = b;
} public override int area()
{
return (width * length);
}
} class RectangleTester
{
static void Main(string[] args)
{
Rectangle r = new Rectangle(, );
double a = r.area();
Console.WriteLine("RectangleArea is: {0}",a);
Console.ReadKey();
}
} }

  运行结果

  

C#-多态(十二)的更多相关文章

  1. Java基础十二--多态是成员的特点

    Java基础十二--多态是成员的特点 一.特点 1,成员变量. 编译和运行都参考等号的左边. 覆盖只发生在函数上,和变量没关系. Fu f = new Zi();System.out.println( ...

  2. JAVA基础知识总结:一到二十二全部总结

    >一: 一.软件开发的常识 1.什么是软件? 一系列按照特定顺序组织起来的计算机数据或者指令 常见的软件: 系统软件:Windows\Mac OS \Linux 应用软件:QQ,一系列的播放器( ...

  3. JVM(十二):方法调用

    JVM(十二):方法调用 在 JVM(七):JVM内存结构 中,我们说到了方法执行在何种内存结构上执行:Java 方法活动在虚拟机栈中的栈帧上,栈帧的具体结构在内存结构中已经详细讲解过了,下面就让我们 ...

  4. 前端开发中SEO的十二条总结

    一. 合理使用title, description, keywords二. 合理使用h1 - h6, h1标签的权重很高, 注意使用频率三. 列表代码使用ul, 重要文字使用strong标签四. 图片 ...

  5. CRL快速开发框架系列教程十二(MongoDB支持)

    本系列目录 CRL快速开发框架系列教程一(Code First数据表不需再关心) CRL快速开发框架系列教程二(基于Lambda表达式查询) CRL快速开发框架系列教程三(更新数据) CRL快速开发框 ...

  6. 我的MYSQL学习心得(十二) 触发器

    我的MYSQL学习心得(十二) 触发器 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数 ...

  7. Web 前端开发精华文章推荐(jQuery、HTML5、CSS3)【系列十二】

    2012年12月12日,[<Web 前端开发人员和设计师必读文章>系列十二]和大家见面了.梦想天空博客关注 前端开发 技术,分享各种增强网站用户体验的 jQuery 插件,展示前沿的 HT ...

  8. 第十二章Fundamental Data Types 基本数据类型

    目录: 12.1 数值概论 12.2整数 12.3浮点数 12.4 字符和字符串 12.5布尔变量 12.6枚举类型 12.7具名常量 12.8数组 12.9创建你自己的类型 12.1   数值概论 ...

  9. [分享] IT天空的二十二条军规

    Una 发表于 2014-9-19 20:25:06 https://www.itsk.com/thread-335975-1-1.html IT天空的二十二条军规 第一条.你不是什么都会,也不是什么 ...

  10. Bootstrap <基础三十二>模态框(Modal)插件

    模态框(Modal)是覆盖在父窗体上的子窗体.通常,目的是显示来自一个单独的源的内容,可以在不离开父窗体的情况下有一些互动.子窗体可提供信息.交互等. 如果您想要单独引用该插件的功能,那么您需要引用  ...

随机推荐

  1. Docker的基本操作与示例

    一.RunC RunC是一个由OCI(Open Container Initiative)制定的标准化轻量容器运行工具.OCI是专门致力于制定容器格式和运行时开放的工业化标准的组织.那容器标准化后Do ...

  2. 分布式系统监视zabbix讲解八之自动发现/自动注册--技术流ken

    自动发现(LLD) 概述 自动发现(LLD)提供了一种在计算机上为不同实体自动创建监控项,触发器和图形的方法.例如,Zabbix可以在你的机器上自动开始监控文件系统或网络接口,而无需为每个文件系统或网 ...

  3. 【转载】ASP.NET MVC设置允许跨域访问

    默认情况下,浏览器端发送Ajax请求一般被禁止跨域访问,如A域名网站访问B域名网站的请求会被终止,在ASP.NET MVC项目中,我们可以配置相应的设置项,允许网站的接口跨域访问,主要需要设置Acce ...

  4. BurpSuiteProxy安装使用

    第一步先安装jdk    https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html  ...

  5. asp.net-基础-20180321

    C#与.NET的关系 C#不是语言,.net是平台.

  6. python学习笔记(三)、字典

    字典是一种映射类型的数据类型.辣么什么是映射呢?如果看过<数据结构与算法>这一本书的小伙伴应该有印象(我也只是大学学习过,嘻嘻). 映射:就是将两个集合一 一对应起来,通过集合a的值,集合 ...

  7. Again Prime? No Time.(uva10870+数论)

    Again Prime? No time.Input: standard inputOutput: standard outputTime Limit: 1 second The problem st ...

  8. vim 学习笔记系列(前言)

    今天上午的时候,看到大神在用vim编程,画面直观,速度很快,操作只需要用命令符就可以实施. 所以可以推断vim的命令符是复杂的,那么学习过程中记忆会很漫长,很痛苦,但是如果记住了这些命令符,并可以熟练 ...

  9. Spring Cloud 研发框架demo

    第一步:准备工作 1.下载并集成公司自定义maven maven包见QQ群文件 2.克隆Git源码到本地eclipse: xx 3.构建项目 一键初始化parent:run as maven inst ...

  10. PHP常用函数归类【持续整理中......】

    一.PHP基础语法   变量,常量     严格区分大小写,但内置结构或关键字无所谓(echo)     命名:不能以数字,空格,.来开头,但是可以有汉字,eg:$变量="aa"; ...