Interface(接口):是一种规则,要求继承类必需实现所有声明的成员,方法是公开的。
Virtual方法(虚方法):可以在继承类里 Override覆盖重新的方方法,有自己的方法体。派生类可使用,可重写。
Abstract(抽象方法):只能在抽象类种修饰,并且没有具体的实现,抽象方法在派生类种 使用Override重写。
一、 抽象类
抽象函数:只有函数定义,没有函数体的函数。例如:

abstract void fun()
抽象类: 使用abstract定义的类称之为抽象类。记住:必须要被继承!
        特性:1.抽象类不能生成对象(生成一个对象就是new一个它,但抽象类中没有方法体,所以生成对象没有意义)
                    2.如果一个抽象类中含有一个抽象函数,那么这个类必须声明为抽象类;
                    3.如果你声明了一个抽象类,其中也可以不写抽象方法,这种情况一般用于不想让其生成对象时
    抽象类的构造函数()
(1)不要再抽象类中定义public或protected internal访问权限的构造函数
(2)应在抽象类中定义protected或private访问权限的构造函数
(3)如果在抽象类中定义一个protected构造函数,则在实例化派生类时,基类可以执行初始化任务
using System;
using System.Collections;//抽象类
public abstract class Animal
{protected string face;//声明为protected的构造函数,在实例化派生类时,基类可以执行初始化工作protected Animal() { this.face = "^_^"; /*抽象类构造函数初始化的例子*/}public abstract void eat();public abstract string Face{get;}
}public class dog : Animal
{//重写基类中的抽象访问器Facepublic override string Face{get{return face;}}//重写基类中的抽象方法eatpublic override void eat()    {        Console.WriteLine("狗吃骨头 " + Face);}
}public class cat : Animal
{public override string Face{get{return face;}}public override void eat(){Console.WriteLine("猫吃鱼 " + Face);}
}public class panda : Animal
{public override string Face{get{return face;}}public override void eat(){Console.WriteLine("熊猫吃竹子 " + Face);}
}public class MainFun
{static void Main(){Animal[] anim = new Animal[3];anim[0] = new dog();anim[1] = new cat();anim[2] = new panda();anim[0].eat();anim[1].eat();anim[2].eat();Console.ReadKey();}
}
二: 虚方法
虚方法其实跟抽象差不太多,虚方法有方法体而抽象方法没有方法体,虚方法不一定非要重写出来, virtual 修饰符不能与 static、abstract, private 或 override 修饰符一起使用。
            java B类继承A类 B中方法c重载了A中c 其实就跟 C#中的虚方法一样 只是java中是默认的不需要再写了
            C# B类继承A类  B中方法c重载(override)了A中虚方法(virtual)c
三:接口

 为什么要用接口,接口有什么用?

    首先接口具有约束作用,可以限定类必须实现某些功能,接口定义了属性、方法和事件,这些都是接口的成员。接口只包含了成员的声明。成员的定义是派生类的责任。接口提供了派生类应遵循的标准结构;
    其次,接口减少了代码量,便于扩展,比如银行 账户等级越高,所具有的功能就越多(实现更多的接口),一个类可以有多个接口(interface);
    再次,规范多个开发人员的代码,

C#中实现多态的三种方式:抽象类,虚方法,接口相关推荐

  1. Django中Model继承的三种方式

    Django中Model继承的三种方式 Django中Model的继承有三种: 1.抽象继承 2.多表继承 3.proxy model(代理model) 1.抽象继承 第一种抽象继承,创建一个通用父类 ...

  2. android获取自定义属性,android 自定义控件中获取属性的三种方式(转)

    第一种方法,直接设置属性值,通过attrs.getAttributeResourceValue拿到这个属性值. (1)在xml文件中设置属性值 android:layout_width="f ...

  3. UE4学习-在虚幻编辑器中打开VS的三种方式

    文章目录 方式一 方式二 方式三 在虚幻编辑器中打开VS的三种方式 方式一 在文件浏览器这里,选择C++类,然后在文件夹内,找到一个和截图中类似的图标,双击,即打开vs,并在vs中打开这个类的代码. ...

  4. java中实现多线程的三种方式

    java中实现多线程的三种方式 1.实现多线程的方法: 在java中实现多线程的两途径:继承Thread类,实现Runable接口(Callable) 2.继承Thread类实现多线程: ​ 继承类T ...

  5. java类初始数组_java中数组初始化的三种方式是什么

    java中数组初始化的三种方式是:1.静态初始化,如[int a[] = {2, 0, 1, 9, 2020}]:2.动态初始化,如[int[] c = new int[4]]:3.默认初始化,如[i ...

  6. 【查看linux中所有用户的三种方式】

    查看linux中所有用户的三种方式学习目标: 提示:通过使用 /etc/passwd 文件,getent 命令,compgen 命令这三种方法查看系统中用户的信息 用户信息存放位置: 提示:Linux ...

  7. java中Map遍历的三种方式

    Java中Map遍历的三种方式 前言 一:在for循环中使用entries实现Map的遍历: 二:在for循环中遍历key或者values,一般适用于只需要map中的key或者value时使用,在性能 ...

  8. c .net ajax,Asp.net mvc 2中使用Ajax的三种方式

    在Asp.net MVC中,我们能非常方便的使用Ajax.这篇文章将介绍三种Ajax使用的方式,分别为原始的Ajax调用.Jquery.Ajax Helper.分别采用这三种方式结合asp.net m ...

  9. JavaScript概述和HTML中嵌入JavaScript的三种方式

    "成功没有捷径,脚踏实地一步一个脚印,该来的总会来,不好高骛远,不急功近利,付出总会有回报,不管处于哪个阶段,都要一步一个脚印,踏实的走好每一步!" 目录 01.JavaScrip ...

最新文章

  1. 单调栈 or 线段树扫描线 ---- E. Delete a Segment [单调栈+二分] [扫描线处理空白位置的技巧乘2]
  2. 巧用Mono.Cecil反射加载类型和方法信息
  3. 爱的世界很拥挤,写在读《爱,就这么简单》之后
  4. 数据结构(2) -- 线性表的顺序表示
  5. Redis----windows下的常用命令
  6. mongodb 查询内嵌文档
  7. 还要做手机?罗永浩称还完债就重返科技行业
  8. C语言十五位正整数相加,二个超长正整数的相加
  9. HDU 1074 Doing Homework 状态压缩 + 搜索
  10. send tcp char far_wemos D1 arduino项目实战1-TCP协议连接Tlink平台③
  11. ScriptX打印控件的使用
  12. flume学习(九):使用Morphline Interceptor
  13. vue图片裁剪功能的实现
  14. 【无标题】申请测绘资质的详细流程及所需详细资料有哪些?
  15. PowerShell_零基础自学课程_1_初识PowerShell
  16. vscode怎么对选定的代码格式化?ctrl+k,ctrl+f(格式化代码)
  17. 数据安全--12--隐私保护浅析
  18. python爬虫文件下载很慢卡住线程_python爬虫多线程假死怎么解决?
  19. 模拟摄像头CCD板机揭秘
  20. 直击|为防虚假信息 百合佳缘引入第三方征信查询合作

热门文章

  1. Ubuntu20.04安装deepin-wine微信、QQ
  2. webplayer和unity通信,互相调用方法
  3. Flask视频流传输
  4. UE5目录转移空间不足
  5. 全新折叠旗舰OPPO Find N发布
  6. 哈尔滨工业大学计算机考研854真题-哈尔滨工业大学 2017年硕士研究生入学考试试题
  7. 哪款蓝牙耳机音质最好,千元内高性价比蓝牙耳机推荐
  8. Python : Xpath简介及实例讲解
  9. hdu 1258 Sum It Up(回溯算法)
  10. caffe自定义层:imagedata层实现多标签