C#温故而知新学习系列之面向对象编程—1-定义类与创建类的对象
2012-01-12 15:50
453 查看
定义类
在C#中使用class关键字,一个名称,一对大括号来定义一个新类,类的数据成员和方法位于类的主体内(一对大括号之间)
类的语法格式
class MyClass
{
//类的主体
}
类修饰符
在定义类的时候可以在类的前面加上访问修饰符,类的修饰符用于控制被访问的范围,默认情况下,类的修饰符为internal
我们可以看到我们在类前面加了private,protected ,protected internal 都编译出错,所以证明类的修饰符只有这两个,一个是internal ,另外一个则是public
![](https://oscdn.geek-share.com/Uploads/Images/Content/201201/894896de5b4ed584e84ae007f4cc6fb5.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201201/156218c82f6c3d9afb92293de24cb256.jpg)
1:internal 内部的
默认什么都不写时是internal
访问仅限于一个程序集中
2:public 公开的
对访问成员没有级别限制,类可以在任何地方被访问
当我们在ClassLibrary1工程里的CallMeClass.cs里是可以实例化MeClass的,这是因为它们在一个在ClassLibrary1.dll文件中,也就是都在一个程序集中,所以可以实例化。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201201/efdea7feb99af556624bee225ebb9d8f.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201201/99e433b3e1699726ff73a6fda6498023.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201201/d43f66286c305caae5a3ee81f978855f.jpg)
当我们在ConsoleApplication1工程中Program.cs中实例化MeClass时,编译失败,这是因为被访问类和访问类它们不在一个程序集中,被访问类MeClass在ClassLibrary1.dll程序集中,而访问类Program.cs在ConsoleApplication1.exe中。而当我们在被访问类中类名称的前面加入public修饰符,就可以编译通过了,就突破限制了。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201201/d995d8abb67f4fe8beee379aae067f3d.jpg)
类成员修饰符
1:private 私有的
只能在类的内部访问
2:internal 内部的
访问仅限于程序集中
3:protected 受保护的
只能在所在类和所在类的派生类中访问,不管该派生类和基类是否在同一程序集中
4:protected internal 受保护的内部
如果是继承关系,无论是不是在同一个程序集里都可以访问,如果不是继承关系,只能在同一个程序集中访问
5:public 公开的
对访问成员没有级别限制,类可以在任何地方被访问
访问权限示意图
![](http://student.csdn.net/attachment/201012/2/1282460_1291263253f8d5.jpg)
创建类的对象
在C#中创建类的实例化对象,需要使用到new关键字
我们定义的类属于自定义类型,也是引用类型,因此可以new关键字实例化我们的这个类
每天学习一点点,每天进步一点点 用文字记录工作,用文字记录人生
在C#中使用class关键字,一个名称,一对大括号来定义一个新类,类的数据成员和方法位于类的主体内(一对大括号之间)
类的语法格式
class MyClass
{
//类的主体
}
类修饰符
在定义类的时候可以在类的前面加上访问修饰符,类的修饰符用于控制被访问的范围,默认情况下,类的修饰符为internal
我们可以看到我们在类前面加了private,protected ,protected internal 都编译出错,所以证明类的修饰符只有这两个,一个是internal ,另外一个则是public
![](https://oscdn.geek-share.com/Uploads/Images/Content/201201/894896de5b4ed584e84ae007f4cc6fb5.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201201/156218c82f6c3d9afb92293de24cb256.jpg)
1:internal 内部的
默认什么都不写时是internal
访问仅限于一个程序集中
2:public 公开的
对访问成员没有级别限制,类可以在任何地方被访问
当我们在ClassLibrary1工程里的CallMeClass.cs里是可以实例化MeClass的,这是因为它们在一个在ClassLibrary1.dll文件中,也就是都在一个程序集中,所以可以实例化。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201201/efdea7feb99af556624bee225ebb9d8f.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201201/99e433b3e1699726ff73a6fda6498023.jpg)
![](https://oscdn.geek-share.com/Uploads/Images/Content/201201/d43f66286c305caae5a3ee81f978855f.jpg)
当我们在ConsoleApplication1工程中Program.cs中实例化MeClass时,编译失败,这是因为被访问类和访问类它们不在一个程序集中,被访问类MeClass在ClassLibrary1.dll程序集中,而访问类Program.cs在ConsoleApplication1.exe中。而当我们在被访问类中类名称的前面加入public修饰符,就可以编译通过了,就突破限制了。
![](https://oscdn.geek-share.com/Uploads/Images/Content/201201/d995d8abb67f4fe8beee379aae067f3d.jpg)
类成员修饰符
1:private 私有的
只能在类的内部访问
2:internal 内部的
访问仅限于程序集中
3:protected 受保护的
只能在所在类和所在类的派生类中访问,不管该派生类和基类是否在同一程序集中
4:protected internal 受保护的内部
如果是继承关系,无论是不是在同一个程序集里都可以访问,如果不是继承关系,只能在同一个程序集中访问
5:public 公开的
对访问成员没有级别限制,类可以在任何地方被访问
访问权限示意图
![](http://student.csdn.net/attachment/201012/2/1282460_1291263253f8d5.jpg)
创建类的对象
在C#中创建类的实例化对象,需要使用到new关键字
我们定义的类属于自定义类型,也是引用类型,因此可以new关键字实例化我们的这个类
每天学习一点点,每天进步一点点 用文字记录工作,用文字记录人生
相关文章推荐
- C#温故而知新学习系列之面向对象编程—定义类与创建类的对象(一)
- C#温故而知新学习系列之面向对象编程—对象初始化器(十五)
- C#温故而知新学习系列之面向对象编程—15-对象初始化器
- C#温故而知新学习系列之面向对象编程—8-方法的重载
- C#温故而知新学习系列之XML编程—5-XmlSerializer类把对象序列化为XML文档
- C#温故而知新学习系列之面向对象编程—分布类是什么?(十四)
- C#温故而知新学习系列之面向对象编程—ref参数(五)
- C#温故而知新学习系列之面向对象编程—readonly关键字(十七)
- C#温故而知新学习系列之面向对象编程—2-定义结构
- C#温故而知新学习系列之面向对象编程—out参数(六)
- C#温故而知新学习系列之XML编程—XmlSerializer类把复杂对象序列化为XML文档(六)
- C#温故而知新学习系列之面向对象编程—接口和抽象类的区别是什么?(十八)
- C#温故而知新学习系列之面向对象编程—属性(十二)
- C#温故而知新学习系列之面向对象编程—10-扩展方法
- C#温故而知新学习系列之面向对象编程—静态方法(九)
- C#温故而知新学习系列之面向对象编程—方法的重载(八)
- C#温故而知新学习系列之面向对象编程—12-属性
- C#温故而知新学习系列之面向对象编程—扩展方法(十)
- C#温故而知新学习系列之面向对象编程—3-类的数据成员
- C#温故而知新学习系列之面向对象编程—13-类和结构的区别是什么?