c#继承、多态、封装、接口等的理解

c#继承、多态、封装、接口等的理解

ID:34415362

大小:27.23 KB

页数:7页

时间:2019-03-05

c#继承、多态、封装、接口等的理解_第1页
c#继承、多态、封装、接口等的理解_第2页
c#继承、多态、封装、接口等的理解_第3页
c#继承、多态、封装、接口等的理解_第4页
c#继承、多态、封装、接口等的理解_第5页
资源描述:

《c#继承、多态、封装、接口等的理解》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、接口:   是隐式公共方法和属性组合起来,以封装特定功能的一个集合。接口不能单独存在,不能像实例化一个类那样实例化接口,但可以建立接口类型的变量。接口不能外含执行其成员的任何代码,而只能定义成员本身,执行过程必须在执行接口的类中实现。abstract和sealed不能在接口中使用,因为这两个修饰符在接口中定义是没有意义的(它们不包含执行代码,所以不能直接实例化,且必须是可以继承的)。接口成员都是公共的。接口没有指定属性应如何存储,所以不能有域。最后,接口与类一样,可以定义为类的成员(但与接口的其他成员不同,因为接口不能包含类型定义)   

2、执行接口的类必须包含该接口所有成员的执行代码,且必须匹配指定的签名(包括匹配指定的get和set块)。可以使用virtual或abstract来执行接口成员,但不能用static或const。接口中添加属性   stringName   {       get;       set;   }--------------------------------------抽象类:   抽象类可以有抽象成员(没有代码体,且必须在派生类中执行,否则派生类本身必须也是抽象的)和非抽象成员(有代码体,也可以是虚拟的,这样可以在派生类中重写)。抽象的方法

3、可以理解为没有方法体的虚函数。--------------------------------------接口和抽象的区别:   接口成员被定义为公共的,因为它们倾向于外部使用,但抽象类的成员也可以是私有的(只要它们不是抽象的)、受保护的、内部的或受保护的内部成员(其中受保护的内部成员只能在应用程序的代码或派生类中访问)。此外,接口不能包含字段、构造函数、析构函数、静态成员或常量。   抽象类主要用作对象系列的基类,共享某些主要特性。接口则主要由类来使用,其中这些类在基础水平上有所不同,但仍可以完成某些相同的任务。   抽象类用于特性,接

4、口用于功能。--------------------------------------继承:   被继承(也称为派生)的类称为父类(也称为基类)。C#中的对象仅能派生于一个基类。只有派生类才能访问一个protected成员。派生类可以提供成员的其它执行代码。这种执行代码不会删除原来的代码,仍可以在类中访问原来的代码,但外部代码不能访问它们。如果没有提供其它执行方式,外部代码就访问基类中成员的执行代码。   注意:虚拟成员不能是私有成员。基类还可以定义为抽象类,抽象类不能直接实例化,要使用抽象类,必须继承这个类。类可以是密封(sealed

5、)的,密封的类不能用作基类,所以也没有派生类。接口也可以派生于其它接口,与类不同的是,接口可以派生多个基接口(以类可以支持多个接口的方式派生)。编译器不允许派生类的可访问性比基类更高,也就是说,内部类可以继承一个公共类,但公共类不能继承一个内部类--------------------------------------多态性:   可以把某个基本类型的变量赋予其派生类型的变量。例AnimalmyAnimal=myCow;//基本类型=派生类型变量然后就可以通过这个变量调用基类的方法,myAnimal.EatFood(),结果是调用派生类

6、中的EatFood()执行代码。注意,不能以相同的方式调用派生类上定义的方法,因为它是基类型变量。但是,可以基本类型的变量转换为派生类变量,调用派生类的方法。CowmyNewCow=(Cow)myAnimal;//把基本类型变量转换为派生类变量myNewCow.Moo();//调用派生类方法接口=派生类,则调用派生类方法,但不可调用未在接口中定义的方法,除非转换派生类对象=(派生类)接口抽象类因为有些实体代码,所在在派生类中要么未定义,要么虚(virtual,虚的话,派生类中必须override,这种情况称为重写,重写则将替换基类和派生类

7、的代码,但在派生类的代码中仍可以用base引用基类),要么定义过(定义过的话,派生类如果要new,则必须加new关键字,这种情况称为隐藏,隐藏的话仍可以通过基类来访问)重写类与隐藏类:隐藏仍可以通过基类来访问,使用new来定义它们。隐藏是覆盖,但仍可以通过将其转换成基类型,引用基类型的方法。new重写是实现了隐藏。重写则将替换基类和派生类的代码,重写是删除,除了在派生类的代码中可以用base引用基类,别的地方都不能。virtual/override是重写。C#中,函数默认情况不是虚拟的,但可以明确声明是虚拟的(构造函数除外)。如果基类函数

8、没有声明为virtual,继承类中要使用与基类签名相同的方法,必须用new关键字声明,否则编译时会有警告(最终效果没区别),都是将基类方法隐藏。如果基类函数声明为virtual,继承类要使用与

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。