Struct, Class, Abstruct Class, Interface的区别
来源:互联网 发布:unity3d连接数据库 编辑:程序博客网 时间:2024/04/29 07:53
Struct vs Class:
相同点:
1) 它们都是创建对象的模板,用以抽象某类具有统统特征的对象;他们都包含数据和方法;
2) 它们在使用上没有太大的区别,除了关键字class和struct不同;
不同点:
1) Struct是值类型,它在内存中的存储方式是存储于堆(heap)上
2) Class是引用类型,它在内存中的存储方式是存储于栈(stack)上
使用实例:
//如下语句定义一个struct,struct是封闭的,所以它不能作为其他结构或者类的基,同时,它也不能基于其他类或者结构
public struct StudentS {
public int age;
public string name;
//重要:struct不能含有默认构造函数,如下语句报错
public StudentS() {}
//但是可以定义含有参数的构造函数
public StudentS(int age, string name) {
this.age = age;
this.name = name; }}
//如下语句定义一个class
public class StudentC {
public int age;
public string name; }
public class ClassMain {
public static void
//如下语句声明这个struct:
StudentS xiaoMing;
//给age赋值,因为struct类型(值类型),所以一旦被声明,就被分配了内存
xiaoMing.age = 20;
//但是,如果不初始化就使用对象的值,则会报错:use of unassigned field
Console.WriteLine(xiaoMing.name);
//应该赋值:
xiaoMing.name = "XiaoMing";
Console.WriteLine(xiaoMing.name);
//或者使用new显式初始化:
xiaoMing = new StudentS();
Console.WriteLine(xiaoMing.name);
//如下语句声明这个class:
StudentC xiaoFang;
//如下语句初始化这个class
//重要!对于class来说,一定要使用new来进行显式的初始化,如不显式初始化则会报错
xiaoFang = new StudentC();
xiaoFang.age = 20;
}
}
Class vs abstract Class:
相同点:
1) 都可以含有成员变量
2) 成员函数都允许有函数体
3) 都不能多重继承或被多重继承
不同点:
1) class能被实例化,abstract class不能被实例化
2) class不能含有抽象方法,abstract能
abstract Class vs Interface:
相同点:
1) 都不能被初始化;
2) 都支持抽象方法;
不同点:
1) abstract class的成员函数允许有函数体,interface不能
2) abstract class允许有成员变量,interface不能(interface只能含有事件,委托,函数,属性,索引器);
3) abstract class的方法允许含有可见性修饰符,interface不能(默认为public)
4) abstract class不能被多重继承,interface可以被多重继承(实现)
5) abstract class 可以拥有构造函数/静态构造函数,interface不可以
- Struct, Class, Abstruct Class, Interface的区别
- class、interface、struct的区别
- Class Struct 的区别
- struct class interface abstract
- class和interface的区别
- interface和class的区别
- struct和class的区别
- struct和class的区别- -
- struct与class的区别
- class struct union 的区别
- struct和class的区别
- class和struct的区别
- struct和class的区别
- struct和class的区别
- class 和 struct 的区别
- Struct 和 Class 的区别
- class和struct的区别
- Struct和Class的区别
- 各种杀毒引擎技术评论!
- H.264视频编码传输的QoS特性分析(三)
- XP装SQL的解决办法
- 流氓广告的清楚方法
- home
- Struct, Class, Abstruct Class, Interface的区别
- 触发器创建后门
- 省市连动
- 征服英语的33条军规
- 无形的栅栏:完全解析Windows系统权限
- 拿到CCIE证书两年后
- 洗牌问题
- 如何做好售前技术支持工作
- [学习笔记].NET学习路线