C类和接口、虚方法和抽象方法及值类型和引用类型的区别_第1页
C类和接口、虚方法和抽象方法及值类型和引用类型的区别_第2页
C类和接口、虚方法和抽象方法及值类型和引用类型的区别_第3页
C类和接口、虚方法和抽象方法及值类型和引用类型的区别_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C#类和接口、虚方法和抽象方法及值类型和引用类型的区别1.C#类和接口的区别接口是负责功能的定义,项目中通过接口来规范类,操作类以及抽象类的概念!而类是负责功能的具体实现!在类中也有抽象类的定义,抽象类与接口的区别在于:抽象类是一个不完全的类,类里面有抽象的方法,属性,也可以有具体的方法和属性,需要进一步的专业化。但接口是一个行为的规范,里面的所有东西都是抽象的!一个类只可以继承一个基类也就是父类,但可以实现多个接口PS:接口除了规范一个行为之外,在具体项目中的实际作用也是十分重要的,在面向对象的设计原则以及设计模式的使用中,无不体现作为一个接口的使用好处,最直接的就是设计原则中OCP(开放封

2、闭原则),我们使用接口,而不需要关心他的具体实现,具体实现的细节变化也无关客户端(使用接口的类)的使用,对与扩展是开放的,我们可以另写一个接口的实现来扩展当前程序,而不影响上层的使用,但对修改是封闭的,即我们不能够再去修改接口的定义,当然这个“不能够”是指在规范原则上不应该这么做!抽象类和接口的区别抽象类(abstractclass)可以包含功能定义和实现,接口(interface)只能包含功能定义抽象类是从一系列相关对象中抽象出来的概念,因此反映的是事物的内部共性;接口是为了满足外部调用而定义的一个功能约定,因此反映的是事物的外部特性分析对象,提炼内部共性形成抽象类,用以表示对象本质,即“是

3、什么”为外部提供调用或功能需要扩充时优先使用接口C#语言中,值类型和引用类型有何不同?答:值类型和引用类型的区别在于,值类型的变量直接存放实际的数据,而引用类型的变量存放的则是数据的地址,即对象的引用。值类型变量直接把变量的值保存在堆栈中,引用类型的变量把实际数据的地址保存在堆栈中,而实际数据则保存在堆中。注意,堆和堆栈是两个不同的概念,在内存中的存储位置也不相同,堆一般用于存储可变长度的数据,如字符串类型;而堆栈则用于存储固定长度的数据,如整型类型的数据int(每个int变量占用四个字节)。由数据存储的位置可以得知,当把一个值变量赋给另一个值变量时,会在堆栈中保存两个完全相同的值;而把一个引

4、用变量赋给另一个引用变量,则会在堆栈中保存对同一个堆位置的两个引用,即在堆栈中保存的是同一个堆的地址。在进行数据操作时,对于值类型,由于每个变量都有自己的值,因此对一个变量的操作不会影响到其它变量;对于引用类型的变量,对一个变量的数据进行操作就是对这个变量在堆中的数据进行操作,如果两个引用类型的变量引用同一个对象,实际含义就是它们在堆栈中保存的堆的地址相同,因此对一个变量的操作就会影响到引用同一个对象的另一个变量。结构和类的区别答:结构是一个值类型,保存在栈上,而类是一个引用类型,保存在受管制的堆上。对结构中的数据进行操作比对类或对象中的数据进行操作速度要快。一般用结构存储多种类型的数据,当创

5、建一个很多类或对象共用的小型对象时,使用结构效率更高。抽象方法和虚方法的区别抽象方法使用abstract关键字ublicabstractblitra)抽象方法是必须被派生类覆写的方法。抽象方法是可以看成是没有实现体的虚方法如果类中包含抽象方法,那么类就必须定义为抽象类,不论是否还包含其它一般方法虚方法使用virtual关键字ublicvirtualblitra)调用虚方法,运行时将确定调用对象是什么类的实例,并调用适当的覆写的方法。虚方法可以有实现体虚拟方法和抽象方法有什么区别?抽象方法只有声明没有实现,需要在子类中实现;虚拟方法有声明和实现,并且可以在子类中覆盖,也可以不覆盖使用父类的默认实现虚拟方法有实现代码抽象方法则没有,并且抽象类不能被实例化,只能实例化实现了全部抽象方法的派生类抽象方法是虚拟方法的一种抽象方法没有实现,它的存在只是为派生类统一接口;派生类应该实现这个方法如果编写一个基类,它永远不会被实现,那么就应该将这个类中的一个或多个方法定义为抽象方法。抽象方法只有声明没有实现,需要在子类中实现;虚拟方法有声明和实现,并且可以在子类中覆盖也可以不覆盖使用父类的默认实现补充一点只允许在抽象类中使用抽象方法声明学习其实大家首先要搞清楚,虚方法与多态性关系密切,虚方法允许派生类完全或部分重写该类的方

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论