一、继承

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. Struts 笔记 内部资料 请勿转载 谢谢合作

    Struts 概述 随着MVC 模式的广泛使用,催生了MVC 框架的产生.在所有的MVC 框架中,出现最早,应用最广的就是Struts 框架. Struts 的起源 Struts 是Apache 软件 ...

  2. jquery常用总结

    1.遍历对象 n是属性 value是对应的值 $.each(param,function(n,value) { datas[n] = value; }); 2.获取select改变后的值 $('sel ...

  3. [原]ComFriendlyWaitForSingleObject

    structThreadParam { unsignedint p1;// +00h ebp-24h unsignedint p2;// +04h ebp-20h unsignedint cookie ...

  4. Codeforces Round #389 (Div. 2, Rated, Based on Technocup 2017 - Elimination Round 3) B

    Description Santa Claus decided to disassemble his keyboard to clean it. After he returned all the k ...

  5. [poj2182] Lost Cows (线段树)

    线段树 Description N (2 <= N <= 8,000) cows have unique brands in the range 1..N. In a spectacula ...

  6. JAVA微信支付多次回调方法解决方案

    @WebServlet("/ActionServlet")public class PayWxOrderingReqCBS extends HttpServlet { public ...

  7. jQuery实践——选择器篇

      一.基本 #id: html:<div id="demo1">demo1</div> jQuery:$("#demo1").css( ...

  8. iOS_一个购物车的使用

    这个项目是本人原创:要转载,请说明下:http://www.cnblogs.com/blogwithstudyofwyn/p/5618107.html 项目的地址:https://github.com ...

  9. html局部打印

    html页面局部打印的小栗子 只要修改点击打印的按钮和打印的div区域的id就行啦 <!DOCTYPE html> <html> <head> <title& ...

  10. 【Android】实现打开关闭效果

    最近抽时间学习一下Android,做个笔记: 布局xml: <LinearLayout android:id="@+id/date_label" android:layout ...