C#---类、结构、接口

类和结构的区别
  • 类当中默认的有一个无参数的构造函数
  • 当在类中写一个有参数的构造函数,默认无参数的构造函数被干掉了
  • 类中写构造函数参数列表中参数个数可以不确定

结构

  • 在结构中默认的也有一个无参数的构造函数

  • 当在结构中写一个有参数的构造函数,默认的无参数的构造函数还有,没被干掉

  • 在结构中写构造函数,要把所有的字段都要完全赋值

类是引用类型,结构是值类型

值类型和应用类型的区别

1.将一个值类型变量赋给另一个值类型变量时,将赋值包含的值。引用类型变量的赋值只赋值对对象的引用,而不赋值对象本身
2.值类型不可能派生出新的类型:所有的值类型均隐式派生自System.ValueType。但与引用类型相同的是,结构也可以实现接口
3.值类型不可能包含Null值
4.每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。

在这里插入图片描述
在这里插入图片描述

接口和类有什么异同
不同点:
  • 不能直接实例化接口
  • 接口不包含方法的实现
  • 接口可以多继承,类只能单继承
  • 类定义可在不同的源文件之间进行拆分

相同点:

  • 接口、类和结构都可以从多个接口继承
  • 接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员
  • 接口和类都可以包含事件、索引器、方法和属性

C# 支持多重继承吗?
类之间不支持,接口之间支持。类对接口叫做实现,不叫继承,类是爹、接口时能力。能拥有多个能力,但不能有多个爹

抽象类和接口有什么区别

相同点:都不能被直接实例化,都可以通过继承实现抽象方法

不同点:

  • 接口支持多继承;抽象类不能实现多继承
  • 接口只能定义行为;抽象类既可以定义行为,还可能提供实现
  • 接口可以用于支持回调;抽象类不能实现回调,因为继承不支持
  • 接口只包含方法、属性、索引器、事件的签名,但不能定义字段和包含实现的方法;抽象类可以定义字段、属性、包含有实现的方法
  • 接口可以作用于值类型和引用类型;抽象类只能作用于引用类型。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章