标题:C#语言 第一部分 面向对象 (二) 类
只看楼主
oopxiajun
Rank: 1
来 自:四川南充
等 级:新手上路
帖 子:7
专家分:0
注 册:2011-6-9
结帖率:0
 问题点数:0 回复次数:1 
C#语言 第一部分 面向对象 (二) 类
类是面向对象的基础,类表现出的最基本特性是其“封装性”。

类是某一些具有相同属性和行为对象的抽象。例如:波斯猫、野猫、家猫、花猫都具有相同的属性和行为,所以被抽象成为猫类。

类具有属性和方法,表示这个类所代表的对象具有的特性和行为。从类实例化对象后,对象就可以给类中定义的属性“赋值”或运行类中定义的方法,属性和方法和每个对象相关,即相同类的不同的对象具有相同的属性,但属性的属性值可以不同;具有相同的方法,但方法运行的结果可以不同。

类需要将和其相关的属性和方法“封装”起来,并和对象进行绑定。

看下面的例子,自行理解:

1   using System;  
2     
3   namespace Edu.Study.OO.Class   {  
4     
5       /// <summary>  
6       /// 定义一个Person类,表示人  
7       /// </summary>  
8       public class Person   {  
9     
10           /// <summary>  
11           /// 在类中定义的变量称为“字段”  
12           /// name为一个string类型的字段,保存人的名字  
13           /// </summary>  
14           private string name;  
15     
16           /// <summary>  
17           /// 保存年龄  
18           /// </summary>  
19           private int age;  
20            
21           /// <summary>  
22           /// 保存性别,true为男性,false为女性  
23           /// </summary>  
24           private bool sex;  
25     
26           /// <summary>  
27           /// 属性定义,在面向对象编程里,字段作为保存属性值的变量,而属性则需要使用特殊的“行为”来表现  
28           /// 一般来说,一对get/set行为用来展现对象的属性,其中get用于获取该对象的属性;set用于设置该对象的属性  
29           /// get/set称为属性的“访问器”  
30           ///   
31           /// 姓名属性  
32           /// </summary>  
33           public string Name {  
34               get {  
35                   // get访问器必须返回一个值,作为该属性的“属性值  
36                   return this.name;  
37     
38                   // . 运算符的作用是访问某个对象的属性或方法  
39                   // this关键字表示“当前实例”,即哪一个对象正在操作属性访问器,this就表示哪个对象  
40                   // 所以一般说法,this表示“当前对象”,使用this.访问的是“声明在本类中”的属性和方法  
41               }  
42               set {  
43                   // set访问器具有一个局部变量value,该值是从外部设置给该属性的值  
44                   this.name = value ;  
45               }  
46     
47               // 属性的基本要求:get访问器必须返回一个值,该值类型和属性类型相同;set访问器可以设置一个值,这个值保存在什么地方倒无所谓  
48           }  
49     
50           /// <summary>  
51           /// 年龄属性  
52           /// </summary>  
53           public int Age {  
54               get {  
55                   return age;  
56               }  
57               set {  
58                   age = value ;  
59               }  
60           }  
61     
62           /// <summary>  
63           /// 性别属性  
64           /// </summary>  
65           public bool Sex {  
66               get {  
67                   return sex;  
68               }  
69               set {  
70                   sex = value ;  
71               }  
72           }  
73     
74           /// <summary>  
75           /// 显示个人信息的方法  
76           /// </summary>  
77           public void ShowMe () {  
78               // 输出,其中:  
79               // 形如{0},   {1}称为“占位符”,当输出内容时,这些占位符会被第一个参数之后的参数“依次取代”,例如:  
80               //   {0}会被this.Name的值取代,即被第一个参数取代  
81               //   {1}会被this.Sex的值取代,即被第二个参数取代  
82               //   {n}会被第n+1个参数取代。  
83               // 使用this.Name,此时属性Name的get访问器会运行,返回Name属性的属性值,其它属性同理  
84               Console.WriteLine("姓名:{0},性别:{1},年龄:{2}岁。" , this.Name, this.Sex, this.Age) ;  
85           }  
86     
87           // 字段、属性和方法前面,都可以使用public,   protected,   private和internal这四种访问修饰符来修饰  
88           // public表示字段、属性或方法为“公开”,公开的成员不仅可以被类中的其它成员访问到,也可以通过这个类的对象访问到  
89           // private表示字段、属性或方法为“私有”,私有的成员只能被类中的其它成员访问到,无法通过类的对象访问到  
90           // protected和internal稍候介绍  
91       }  
92     
93       class Program {  
94           static void Main(string[] args) {  
95               // 通过new运算符可以实例化一个对象  
96              // 实例化Person类的对象,保存在person变量中  
97               Person p1 = new Person();  
98               Person p2 = new Person();  
99     
100               // 设置person对象的各个属性,使用person.Name = "王宝宝",Name属性的set访问器会被运行,等号右边的值"王宝宝"传递给set访问器的value变量  
101               p1.Name = "王宝宝";  
102               p1.Age = 21;  
103               p1.Sex = false;  
104     
105               p2.Name = "李大大";  
106               p2.Age = 18;  
107               p2.Sex = true;  
108     
109               // 使用 . 操作符访问person对象的ShowMe方法,显示结果  
110               p1.ShowMe();  
111               p2.ShowMe();  
112   
 
113           }  
114       }  
115   }  
搜索更多相关主题的帖子: 行为 波斯猫 
2011-06-10 14:39
boking134
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2011-8-20
得分:0 
顶顶顶
2011-08-23 14:53



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-342417-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.051854 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved