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

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

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

 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. Java 基础:hashCode方法

    Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket 一.前言 泥瓦匠最近被项目搞的天昏地暗.发现有些要给自己一些目标,关于技术的目标: 专注很重要.专注J ...

  2. ⑧javaWeb之在例子中学习(过滤器Filter)

    前言 本系列 Servlet & JSP 学习系列[传送门]逐渐到了中期了,希望大家喜欢我写的,总结的点点滴滴- 今天我们来讲讲过滤器 你们的支持是我写博客的动力哦. 最近买了两本书,觉得大二 ...

  3. Java——this关键字

    前言 this关键字属于Java中比较复杂的关键字之一,若是学习过C++或者其他的一些面向对象语言也会遇到this这个关键字并且都会看到this的含义就是表示当前对象.什么叫做表示当前对象?this在 ...

  4. [总结]数论和组合计数类数学相关(定理&证明&板子)

    0 写在前面 0.0 前言 由于我太菜了,导致一些东西一学就忘,特开此文来记录下最让我头痛的数学相关问题. 一些引用的文字都注释了原文链接,若侵犯了您的权益,敬请告知:若文章中出现错误,也烦请告知. ...

  5. 监控MySQL组复制

    使用 Perfomance Schema 中的表来监控组复制,假定你的MySQL编译时已经启动了 Performance Schema 表.组复制将添加如下两张 P_S 表: performance_ ...

  6. C 程序与 C++ 程序之间的相互调用

    因为 C 编译器编译函数时不带参数的类型信息,只包含函数的符号名字.如 void foo( int x ) , C 编译器会将此函数编译成类似 _foo 的符号,C 链接器只要找到了调用函数的符号,就 ...

  7. RNN入门(二)识别验证码

    介绍   作为RNN的第二个demo,笔者将会介绍RNN模型在识别验证码方面的应用.   我们的验证码及样本数据集来自于博客: CNN大战验证码,在这篇博客中,我们已经准备好了所需的样本数据集,不需要 ...

  8. [译]如何在.NET Core中使用System.Drawing?

    你大概知道System.Drawing,它是一个执行图形相关任务的流行的API,同时它也不属于.NET Core的一部分.最初是把.NET Core作为云端框架设计的,它不包含非云端相关API.另一方 ...

  9. 【转载】阿里云Windows服务器快速部署PHP运行环境

    PHP也是一种常用的网站脚本语言,时常用于网站应用程序的编写,PHP运行环境包含几个要素:PHP.Apache服务器.MySql数据库,此3个要素是Php网站运行的必要条件.在阿里云的Windows服 ...

  10. IdentityServer4客户端JWT解密实现(基于.net4.0)

    情景:公司项目基于.net4.0,web客户端实现单点登录需要自己解密id_token,对于jwt解密,.net提供了IdentityModel类库,但是4.0中该类库不可用,所以自己实现了解密方法. ...