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