一、继承

1、C#中的继承规则

  • 继承是可传递的
  • 派生类是对基类的扩展
  • 构造函数和析构函数不能被继承
  • 派生类可以覆盖已继承的成员
  • 派生类只能从一个类中继承,可以通过接口来实现多重继承
  • 类可以定义虚属性、虚方法及虚索引指示器,派生类可以重载这些成员,从而使类展示出多态性

2、访问基类成员两种方法

  • base.方法名();
  • 显式类型转换

3、隐藏基类成员----new修饰符  public new void 基类方法名()

4、密封类和密封方法

密封类在声明中使用sealed修饰符,防止被其他类继承-----public sealed class 方法名()

5、抽象类和抽象方法

把类或方法声明为abstract来实现抽象,抽象类不能实例化,没有任何执行代码,必须在派生类中重写override

6、虚函数

方法在基类里不用具体实现,而是在派生类中实现功能(override),可以把基类中的方法声明为虚函数(virtual)

7、多重继承

C#不支持多重继承,子类只能派生于一个父类,但允许类派生于多个接口。

  • 实现多个接口的相同名称的方法,前面不能加public等关键词,方法前加相应的接口

void IFace1.Say(){}

void IFace2.Say(){}

  • 对于不同名的方法,前面必须加上public标识符

public void Hello(){}

  • 创建派生类的实例时,如果调用某个接口的实现(有同名方法时),必须强制将实例转换为相应接口类型

FaceToFace facetest=new FaceToFace();

((IFace1)facetest).say();

facetest.Hello();

8、继承与访问修饰符

访问修饰符用于指定声明的成员的可访问性,类的继承中有4个访问修饰符:public、protected、private、internal

使用这些修饰符可指定5种访问级别:

public       访问不受限制

protected 仅限于类自己的派生类访问和继承

private     仅限类自己内部访问,不能继承

internal    在同一程序集内的类

protected internal 在同一程序集内的类和其派生类

二、委托

定义委托的语法:delegate void 方法名();

delegate关键字用于声明一个引用类型,该引用类型用于封装命名方法或匿名方法。

委托是一种特殊的对象类型,它定义了方法的类型,使得可以将方法当做寿 另一个方法的参数进行传递,委托包含的是方法的地址,是将方法动态的赋给参数的做法。

  • 多播委托----可以将多个方法赋给同一个委托,这就是多播委托。当调用委托时,将依次调用其所绑定的方法。

三、反射

反射(Reflection)是.NET中的重要机制,通过反射,可以在运行时获得每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。

我们可以在程序中得到动态实例化对象,获得对象的属性,并调用对象的方法。

  • 首先添加命名空间的引用----using System.Reflection
  • 列出程序集中的所有类型----Assembly=Assembly.LoadFrom("dll名"); Type[] type=ass.GetTypes();
  • 列出类中所有方法----MethodInfo[] mif=类名.GetMethods();
  • 实例化类,并调用类中的方法----Object obj=Activator.CreateInstance(类名);MethodInfo ms=类名.GetMethod("方法名");ms.Invoke(obj,null);

.NET的面向对象的更多相关文章

  1. angular2系列教程(六)两种pipe:函数式编程与面向对象编程

    今天,我们要讲的是angualr2的pipe这个知识点. 例子

  2. 一起学 Java(二)面向对象

    一.方法函数 函数也称为方法,就是定义在类中的具有特定功能的一段独立代码.用于定义功能,提高代码的复用性. 函数的特点1> 定义函数可以将功能代码进行封装,便于对该功能进行复用:2> 函数 ...

  3. js面向对象学习 - 对象概念及创建对象

    原文地址:js面向对象学习笔记 一.对象概念 对象是什么?对象是“无序属性的集合,其属性可以包括基本值,对象或者函数”.也就是一组名值对的无序集合. 对象的特性(不可直接访问),也就是属性包含两种,数 ...

  4. 前端开发:面向对象与javascript中的面向对象实现(二)构造函数与原型

    前端开发:面向对象与javascript中的面向对象实现(二)构造函数与原型 前言(题外话): 有人说拖延症是一个绝症,哎呀治不好了.先不说这是一个每个人都多多少少会有的,也不管它究竟对生活有多么大的 ...

  5. .NET 基础 一步步 一幕幕[面向对象之对象和类]

    对象和类 本篇正式进入面向对象的知识点简述: 何为对象,佛曰:一花一世界,一木一浮生,一草一天堂,一叶一如来,一砂一极乐,一方一净土,一笑一尘缘,一念一清静.可见"万物皆对象". ...

  6. 简单分析JavaScript中的面向对象

    初学JavaScript的时候有人会认为JavaScript不是一门面向对象的语言,因为JS是没有类的概念的,但是这并不代表JavaScript没有对象的存在,而且JavaScript也提供了其它的方 ...

  7. Java程序员应该了解的10个面向对象设计原则

    面向对象设计原则: 是OOPS(Object-Oriented Programming System,面向对象的程序设计系统)编程的核心,但大多数Java程序员追逐像Singleton.Decorat ...

  8. JavaScript学习笔记(三)——this、原型、javascript面向对象

    一.this 在JavaScript中this表示:谁调用它,this就是谁. JavaScript是由对象组成的,一切皆为对象,万物皆为对象.this是一个动态的对象,根据调用的对象不同而发生变化, ...

  9. 带你一分钟理解闭包--js面向对象编程

    上一篇<简单粗暴地理解js原型链--js面向对象编程>没想到能攒到这么多赞,实属意外.分享是个好事情,尤其是分享自己的学习感悟.所以网上关于原型链.闭包.作用域等文章多如牛毛,很多文章写得 ...

  10. .NET基础拾遗(2)面向对象的实现和异常的处理基础

    Index : (1)类型语法.内存管理和垃圾回收基础 (2)面向对象的实现和异常的处理基础 (3)字符串.集合与流 (4)委托.事件.反射与特性 (5)多线程开发基础 (6)ADO.NET与数据库开 ...

随机推荐

  1. input 的blur事件之后button的onclick事件不执行解决方案

    最近发现网页程序中有个BUG,就是在input标签输入框中输入完数据后,直接点击“取消” 按钮的时候.出现网页崩死的情况: 经过小主酸菜我,各种方法的尝试后,找到一个初步可以解决的方案,在这里分享给大 ...

  2. solr 4.6的安装配置

    从网上看了很多资料,很多都是老的.自己也算是结合着弄出来了. 1.下载的准备工作 tomcat8.solr4.6   具体的下载自己去找去吧.或者后期我在提供. 2.开始配置 tomcat路径:E:\ ...

  3. 亚马逊EC2弹性IP收费

    刚收到亚马逊云账单,被扣了4.44刀,吓尿,麻溜的去查账单详情,发现之前弃用的美国实例有个弹性IP没释放掉,占着茅坑还不拉屎,被扣钱宝宝无话可说,赶紧释放... $0.005 per Elastic ...

  4. css+div解决文字溢出控制显示字数

    一.一般的文字截断(适用于内联与块):  Example Source Code [www.mb5u.com] .text-overflow {display:block;/*内联对象需加*/widt ...

  5. JS判断输入是否为整数的正则表达式

      1.正确表达式 "^\\d+$" //非负整数(正整数 + 0)"^[0-9]*[1-9][0-9]*$" //正整数"^((-\\d+)|(0+ ...

  6. VS配置路径和宏

    http://blog.csdn.net/puttytree/article/details/7838419

  7. Python3基础 casefold 将字符串中的所有字符变成小写

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  8. mysql 5.7.16安装与给远程连接权限

    ZIP Archive版是免安装的.只要解压就行了.不需要安装.我的放在d盘啦. 1.配置: 也就是my.ini文件的由来. 把my-default.ini(此文件是解压之后,自带的)这个文件复制一下 ...

  9. 遗传算法在JobShop中的应用研究(part4:变异)

    下面,我们以车间调度为例来谈谈遗传算法中的另一个重要操作变异.变异操作通常发生在交叉操作之后,它的操作对象是交叉得到的新染色体.在本文中我们通过随机交换染色体的两个位置上的值来得到变异后的染色体,变异 ...

  10. 利用scrapy-splash爬取JS生成的动态页面

    目前,为了加速页面的加载速度,页面的很多部分都是用JS生成的,而对于用scrapy爬虫来说就是一个很大的问题,因为scrapy没有JS engine,所以爬取的都是静态页面,对于JS生成的动态页面都无 ...