程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> C#基礎知識整理:基礎知識(2) 類

C#基礎知識整理:基礎知識(2) 類

編輯:C#入門知識

類,是面向對象語言的基礎。類的三大特性:封裝、繼承、多態。最基本的特性就是封裝性。
程序員用程序描述世界,將世界的所有事物都看成對象,怎麼描述這個對象?那就是類了。也就是用類來封裝對象。用書上的話說,類是具有相同屬性和行為的對象的抽象。寶馬汽車、別克汽車、五菱之光汽車... 基本具有相同的屬性和行為,所以可以抽象一個汽車類,當然也可以把路人甲的寶馬汽車、路人乙的別克汽車... 抽象一個汽車類。
類抽象完成後,可以實例化,實例化後的稱之為一個對象,然後可以對屬性賦值或運行類的方法。屬性和方法同每個對象關聯,不同的對象有相同的屬性,但屬性值可能不同;也具有相同的方法,但方法運行的結果可能不同。
類的屬性和方法是被類封裝的。
看如下類的定義:
[csharp] 
1. using System; 
2.  
3. namespace YYS.CSharpStudy.MainConsole 
4. { 
5.     /// <summary>  
6.     /// 定義一個學校類  
7.     /// 這個類只有屬性,沒有方法(其實確切的來說是有一個默認的構造器方法)  
8.     /// </summary>  
9.     public class YSchool 
10.     { 
11.         /// <summary>  
12.         ///字段, 類裡面定義的變量稱之為“字段”  
13.         /// 保存學校的ID  
14.         /// </summary>  
15.         private int id = 0; 
16.  
17.         /// <summary>  
18.         /// 保存學校的名字  
19.         /// </summary>  
20.         private string name = string.Empty; 
21.  
22.         /// <summary>  
23.         /// 屬性,字段作為保存屬性值的變量,而屬性則有特殊的“行為”。  
24.         /// 使用get/set來表示屬性的行為。get取屬性值,set給屬性賦值。因此get/set稱為“訪問器”。  
25.         ///   
26.         /// ID屬性  
27.         /// </summary>  
28.         public int ID 
29.         { 
30.             get 
31.             { 
32.                 //get返回一個值,表示當前對象的該屬性的屬性值。  
33.                 return this.id; 
34.             } 
35.             //這裡的.號用於訪問對象的屬性或方法。  
36.             //this指當前對象,意即哪個實例在操作屬性和方法,this就指哪個實例。  
37.             set 
38.             { 
39.                 //局部變量value,value值是用於外部賦給該該屬性的值。  
40.                 this.id = value; 
41.             } 
42.         } 
43.         /// <summary>  
44.         /// 姓名屬性  
45.         /// </summary>  
46.         public string Name 
47.         { 
48.             get 
49.             { 
50.                 return name; 
51.             } 
52.  
53.             set 
54.             { 
55.                 name = value; 
56.             } 
57.         } 
58.     } 
59.  
60.     public class YTeacher 
61.     { 
62.         private int id = 0; 
63.  
64.         private string name = string.Empty; 
65.  
66.         //這裡將YSchool類作為了YTeacher的一個屬性。  
67.         private YSchool school = null; 
68.  
69.         private string introDuction = string.Empty; 
70.  
71.         private string imagePath = string.Empty; 
72.  
73.         public int ID 
74.         { 
75.             get 
76.             { 
77.                 return id; 
78.             } 
79.  
80.             set 
81.             { 
82.                 id = value; 
83.             } 
84.         } 
85.  
86.         public string Name 
87.         { 
88.             get 
89.             { 
90.                 return name; 
91.             } 
92.  
93.             set 
94.             { 
95.                 name = value; 
96.             } 
97.         } 
98.  
99.         public YSchool School 
100.         { 
101.             get 
102.             { 
103.                 if (school == null) 
104.                 { 
105.                     school = new YSchool(); 
106.                 } 
107.                 return school; 
108.             } 
109.  
110.             set 
111.             { 
112.                 school = value; 
113.             } 
114.         } 
115.  
116.         public string IntroDuction 
117.         { 
118.             get 
119.             { 
120.                 return introDuction; 
121.             } 
122.  
123.             set 
124.             { 
125.                 introDuction = value; 
126.             } 
127.         } 
128.  
129.         public string ImagePath 
130.         { 
131.             get 
132.             { 
133.                 return imagePath; 
134.             } 
135.  
136.             set 
137.             { 
138.                 imagePath = value; 
139.             } 
140.         } 
141.  
142.         /// <summary>  
143.         /// 給學生講課的方法  
144.         /// </summary>  
145.         public void ToTeachStudents() 
146.         { 
147.             //{0},{1},{2}是占位符,對應後面的參數。一般如果顯示的內容中含有參數,我比較喜歡用string.Format。  
148.             Console.WriteLine(string.Format(@"{0} 老師教育同學們: Good Good Study,Day Day Up!", this.name)); 
149.         } 
150.         /// <summary>  
151.         /// 懲罰犯錯誤學生的方法  
152.         /// </summary>  
153.         /// <param name="punishmentContent"></param>  
154.         public void PunishmentStudents(string punishmentContent) 
155.         { 
156.             Console.WriteLine(string.Format(@"{0} 的{1} 老師讓犯錯誤的學生 {2}", this.school.Name, this.name, punishmentContent)); 
157.         } 
158.  
159.         //字段、屬性和方法前修飾符有:public,private,protected,internal  
160.         //public,字段、屬性和方法均為公開的,不僅類中的其它成員能訪問到,還可以通過類的實例訪問的到。  
161.         //private,字段、屬性和方法均為私有的,只能被類中的其它成員訪問到,不能通過類的實例訪問。  
162.         //protected,包含private特性,而且protected修飾的字段、屬性和方法能被子類訪問到。  
163.         //internal,在同一個程序集中和public一樣,但是不能被其它程序集訪問,而且子類的話,只能被同一個命名空間的子類訪問到。  
164.     } 
165. } 
 
[csharp] 
1. using System; 
2.  
3. namespace YYS.CSharpStudy.MainConsole 
4. { 
5.     class Program 
6.     { 
7.         static void Main(string[] args) 
8.         { 
9.             //實例化具體對象,並且賦值  
10.             YSchool shool1 = new YSchool(); 
11.  
12.             shool1.ID = 1; 
13.  
14.             shool1.Name = "清華附中"; 
15.  
16.             YSchool school2 = new YSchool(); 
17.  
18.             school2.ID = 2; 
19.  
20.             school2.Name = "北師大附中"; 
21.  
22.             YTeacher techerS = new YTeacher(); 
23.  
24.             techerS.ID = 1; 
25.  
26.             techerS.Name = @"尚進"; 
27.  
28.             techerS.School = shool1; 
29.  
30.             techerS.IntroDuction = @"很嚴厲"; 
31.  
32.             techerS.ImagePath = @"http://"; 
33.  
34.             //運行當前實例的方法  
35.             techerS.ToTeachStudents(); 
36.  
37.             //運行當前實例的方法,傳入參數  
38.             techerS.PunishmentStudents(@"抄所有學過的唐詩一百遍"); 
39.  
40.             Console.WriteLine(); 
41.  
42.             YTeacher techerQ = new YTeacher(); 
43.  
44.             techerQ.ID = 2; 
45.  
46.             techerQ.Name = @"秦奮"; 
47.  
48.             techerQ.School = school2; 
49.  
50.             techerQ.IntroDuction = @"和藹可親"; 
51.  
52.             techerQ.ImagePath = @"http://"; 
53.  
54.             techerQ.ToTeachStudents(); 
55.  
56.             techerQ.PunishmentStudents(@"抄所有學過的數學公式一遍"); 
57.  
58.             Console.ReadKey(); 
59.         } 
60.     } 
61. } 

結果

作者:yysyangyangyangshan

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved