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

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

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

 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. html2canvas关于图片不能正常截取

    问题 首先说说遇到了什么问题.首先有这么一个需求.需要前端根据后端传过来数据,动态的生成图片.图片中的文案.背景图片.用户头像全部都是通过后端的接口获取.但是使用 html2canvas 生成的can ...

  2. go基础系列:数组

    了解Python.Perl.JavaScript的人想必都知道它们的数组是动态的,可以随需求自动增大数组长度.但Go中的数组是固定长度的,数组一经声明,就无法扩大.缩减数组的长度.但Go中也有类似的动 ...

  3. JavaScript 系列博客(七)

    JavaScript 系列博客(七) 前言 本篇博客介绍页面节点概念.文档结构以及如何使用 js 操作文档节点还有事件 target 以及 BOM 操作. 节点 dom与dom属性 // DOM: 文 ...

  4. RDD内存迭代原理(Resilient Distributed Datasets)---弹性分布式数据集

    Spark的核心RDD Resilient Distributed Datasets(弹性分布式数据集)   Spark运行原理与RDD理论 Spark与MapReduce对比,MapReduce的计 ...

  5. 使用LayoutInflater添加一个布局引用

    LayoutInflater 与 xml 的<include/>的区别,至今没搞清楚,下面记录一下LayoutInflater引用一个布局并立即显示呈现的方法: private void ...

  6. jqgrid中的column的日期格式

    ---恢复内容开始--- {name:'StartDate',index:'StartDate', formatter:"date", formatoptions: {newfor ...

  7. No.3 数组中重复的数字 (P39)

    题目1:找出数组中重复的数字 [题目描述] 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个 ...

  8. 缓存MEMCACHE php调用(一)

    在项目中,涉及大访问量时,合理的使用缓存能减轻数据库的压力,同时提升用户体验.即在非实时性的需求的前提下,一小段时间内(若干秒),用于显示的数据从缓存中获取的,而不用直接读取数据库,能有效的减少数据库 ...

  9. 继续封装个 Volley 组件

    本篇文章已授权微信公众号 dasu_Android(大苏)独家发布 前面已经封装了很多常用.基础的组件了:base-module, 包括了: crash 处理 常用工具类 apk 升级处理 log 组 ...

  10. 在html中使用特殊字体

    目的:一首诗,要求从右往左读,垂直排列,类似古文 效果图: html内容: <!doctype html><html lang="en"><head& ...