这里先从代码的角度认识,也就是如何用关键字class创建一个类,如何实例化,如何调用等。
类的定义
修饰符 class 类名 {类的成员}
public class 猫
{
//成员的定义
}
上面就是一个很简单的类的定义了,类名为“猫”,访问类型为public,由{}括起来的部分就是类的主体,也就是类的成员所在的位置。
类名很好理解,他好比我们大家的姓名,你叫张三,他叫王五,也就是一个称谓。修饰符稍微难理解点,一般的解释说他是一种访问权限,更确切的说是自身提供给外界(类或对像等)的对其自身资源(成员方法、成员属性)使用权利,换句话说我有什么资源你能用,什么资源你不能使用。有个不是太恰当但横形象的例子可供大家理解----澡堂,澡堂分男澡堂和女澡堂,澡堂就是类名,男和女就是修饰符,男人呢就只能进男澡堂,如果你是男的进了女澡堂那肯定会有人找你谈话并让你单独待段时间
。类的修饰符达6、7种之多,但我们大多数情况看到的都是public,有时候都没有修饰符,当没有修饰符的时候其默认为internal.
类的成员通常有域(C#里面对常说的属性的称呼,也就是变量或者叫数据成员),成员方法,构造函数。他们的一般写法是
修饰符 类型 数据成员/成员方法的名称
这里的修饰符和类的修饰符一样,修饰符是可以选的,默认为private.需要注意的是修饰符的位置必须在类型前面,如果颠倒会产生编译错误。现在发现澡堂这个例子还不错,想再以他为例写一个更完整点的类,我们都知道澡堂是洗澡的地方,所以我们要给这个类一个“洗澡”的成员方法,从而使澡堂有洗澡的功能,当然有的澡堂还提供“桑拿”、“按摩”等功能,也可以把这些加进去,光有这些还不够,他还需要一个名字,我们还要知道这个澡堂在什么地方,所以还要一个地址,那好现在把这个类写出来
public class 澡堂
{
public string 名字;
public string 地址;
public 澡堂()
{
名字 = "红星澡堂";
地址 = "西关街45号";
}
public void 洗澡()
{
//
}
public void 按摩()
{
//
}
public void 桑拿()
{
//
}
}
这就是一个相对完整的类的定义了,仔细看一下可以发现其实类主要是由两部分组成,一是数据成员(域),一是成员方法,可以和过程化编程语言里面的变量和函数相对应,C#(对象化编程语言)把他们放在了一起,据说有一定的好处,现在还没真正的理解
。不过可以把类理解为在更高层面对已有数据结构的抽象,是一种自定义的数据类型。
在使用变量的时候,我们总是要先对他行赋值然后才能使用,类也一样,使用前也要对其进行赋值,但在这里我们叫他实例化。实例化一个类要使用关键字new以上面的类为例:
澡堂 红星澡堂=new 澡堂();
红星澡堂.洗澡();
第一行就是实例化澡堂这个类,实例化后的具体名字叫红星澡堂,澡堂有了我们就可以去洗澡了,第二行就是对实例化后类的使用(实例化后的类叫对象),这个实例化的过程其实是由构造函数完成的,这个构造函数也是成员方法,但是一个比较特殊的成员方法,他具有一些自己的特色:
.和类同名
.不具有返回类型
.修饰符一般为public便于在实例化的时候能够访问的到
虽然构造函数是用来实例化的时候初始化对象的,但却不是必须写的,如果就算没有也可以实例化类,系统检查到没有自定义的构造函数时,他会创建一个默认的构造函数来初始化对象,这个构造函数会以数据成员的默认值来初始化数据成员。各种类型的默认值参照MSDN里面的默认值表。
小结:
1.类是一种数据类型,和数组,结构一样,只是里面装的东西更多些,有数据和对数据进行操作的方法。
2.新增了访问权限这个特性,以前的过程化语言靠位置来确定变量和函数的访问权限,所以有了修饰符可以很灵活的制定所需的访问权限。
3.类的默认访问修饰符是internal,成员的默认访问修饰符是private。
ps:这是第一次写这样的文章思路有写乱,不足自处望大家斧正。
类的定义
修饰符 class 类名 {类的成员}
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
上面就是一个很简单的类的定义了,类名为“猫”,访问类型为public,由{}括起来的部分就是类的主体,也就是类的成员所在的位置。
类名很好理解,他好比我们大家的姓名,你叫张三,他叫王五,也就是一个称谓。修饰符稍微难理解点,一般的解释说他是一种访问权限,更确切的说是自身提供给外界(类或对像等)的对其自身资源(成员方法、成员属性)使用权利,换句话说我有什么资源你能用,什么资源你不能使用。有个不是太恰当但横形象的例子可供大家理解----澡堂,澡堂分男澡堂和女澡堂,澡堂就是类名,男和女就是修饰符,男人呢就只能进男澡堂,如果你是男的进了女澡堂那肯定会有人找你谈话并让你单独待段时间
![](https://www.cnblogs.com/Emoticons/QQ/14.gif)
类的成员通常有域(C#里面对常说的属性的称呼,也就是变量或者叫数据成员),成员方法,构造函数。他们的一般写法是
修饰符 类型 数据成员/成员方法的名称
这里的修饰符和类的修饰符一样,修饰符是可以选的,默认为private.需要注意的是修饰符的位置必须在类型前面,如果颠倒会产生编译错误。现在发现澡堂这个例子还不错,想再以他为例写一个更完整点的类,我们都知道澡堂是洗澡的地方,所以我们要给这个类一个“洗澡”的成员方法,从而使澡堂有洗澡的功能,当然有的澡堂还提供“桑拿”、“按摩”等功能,也可以把这些加进去,光有这些还不够,他还需要一个名字,我们还要知道这个澡堂在什么地方,所以还要一个地址,那好现在把这个类写出来
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](/Images/OutliningIndicators/None.gif)
这就是一个相对完整的类的定义了,仔细看一下可以发现其实类主要是由两部分组成,一是数据成员(域),一是成员方法,可以和过程化编程语言里面的变量和函数相对应,C#(对象化编程语言)把他们放在了一起,据说有一定的好处,现在还没真正的理解
![](https://www.cnblogs.com/Emoticons/QQ/14.gif)
在使用变量的时候,我们总是要先对他行赋值然后才能使用,类也一样,使用前也要对其进行赋值,但在这里我们叫他实例化。实例化一个类要使用关键字new以上面的类为例:
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
第一行就是实例化澡堂这个类,实例化后的具体名字叫红星澡堂,澡堂有了我们就可以去洗澡了,第二行就是对实例化后类的使用(实例化后的类叫对象),这个实例化的过程其实是由构造函数完成的,这个构造函数也是成员方法,但是一个比较特殊的成员方法,他具有一些自己的特色:
.和类同名
.不具有返回类型
.修饰符一般为public便于在实例化的时候能够访问的到
虽然构造函数是用来实例化的时候初始化对象的,但却不是必须写的,如果就算没有也可以实例化类,系统检查到没有自定义的构造函数时,他会创建一个默认的构造函数来初始化对象,这个构造函数会以数据成员的默认值来初始化数据成员。各种类型的默认值参照MSDN里面的默认值表。
小结:
1.类是一种数据类型,和数组,结构一样,只是里面装的东西更多些,有数据和对数据进行操作的方法。
2.新增了访问权限这个特性,以前的过程化语言靠位置来确定变量和函数的访问权限,所以有了修饰符可以很灵活的制定所需的访问权限。
3.类的默认访问修饰符是internal,成员的默认访问修饰符是private。
ps:这是第一次写这样的文章思路有写乱,不足自处望大家斧正。