- C# 2012程序設計實踐教程 (清華電腦學堂)
- 張冬旭
- 1232字
- 2021-03-26 17:16:28
3.1 類和對象
類是面向對象編程語言中的一個核心概念,它實際上是對某種類型的對象定義變量和方法的原型。類實際上也是一種復雜的數據類型,將不同類型的數據和與這些數據相關的操作封裝在一起,就構成了類。
本節介紹類的基礎知識,包含兩個知識點:類和對象。
3.1.1 類
類是對現實生活中一類具有共同特征的事物的抽象,是面向對象編程的基礎。類和對象不同,類是抽象的,對象是具體的。例如,在某一個學校中有多個班級,這時可以說“學校”是抽象的,學校中的“一年級三班”則是一個具體的對象。又如,一個班級中有多名同學,這時可以說“班級”是抽象的,該班級中名字叫“許小南”的同學是一個具體的對象。
在C#中定義類時需要通過class關鍵字。定義類的基本語法如下:
[修飾符] class 類名 [:父類和實現的接口列表] { 類成員 }
上述語法中,帶有中括號([])的部分是可選的。修飾符是用來修飾類的,類修飾符包括public、protected、private、internal、partial、abstract、sealed和static。其中,public、protected、private和internal表示可訪問修飾符,它們可以和其他的修飾符結合使用,具體說明如表3-1所示。類的成員變量可以是字段、屬性和方法等,在3.3節中會進行介紹。
表3-1 類的可訪問修飾符

【范例1】
在當前的應用程序中創建全稱是BookType.cs的文件,創建完畢后會自動向該文件中添加一個BookType類。默認情況下,BookType類的可訪問性為internal,這里將可訪問性指定為public類型的。在BookType類中添加公有字段和一個公有方法。完整代碼如下。
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace MyTest { public class BookType { public string typeName; //類型名稱 public string TypeName { get { return typeName; } set { typeName = value; } } } }
從上述代碼中可以看出,當前BookType類所屬的命名空間是MyTest。類的可訪問修飾符(如public)可以和其他的修飾關鍵字(如abstract)一起使用。用abstract關鍵字聲明的類是抽象的,關于抽象類會在后面進行介紹。
3.1.2 類的對象
類是對某一類對象的定義,包括它的名稱、方法、屬性和事件等信息。實際上,類本身并不是對象,對象是現實生活中一個一個的實體,類是人們對現實生活中存在的對象不斷認識而產生的抽象。在C#中,類的概念本質上是與現實生活中類的概念相同的。例如,名字叫“陳陽”的人說:我家的小白是一條狗。在這里,狗就代表一個類,而小白就是一個具體對象。
簡單來說,類定義對象的類型,但是它不是對象本身。對象是基于類的具體實體,有時稱為類的實例。當引用類的代碼運行時,類的一個新實例(即對象)就會在內存中創建。通過new關鍵字可以創建對象。
【范例2】
在范例1中創建了BookType類,向Program.cs類的程序主入口Main()方法中寫入新代碼,如下所示。
static void Main(string[] args) { BookType booktype1 = new BookType(); //創建第一個對象 booktype1.typeName = "校園小說"; //指定字段的值 BookType booktype2 = new BookType(); //創建第二個對象 booktype2.typeName = "旅游雜志"; //指定字段的值 Console.WriteLine("第一本圖書類型:{0}", booktype1.TypeName); Console.WriteLine("第二本圖書類型:" + booktype2.TypeName); Console.ReadLine(); }
上述代碼中,通過new BookType()實例化BookType類,booktype1和booktype2分別表示類的兩個實例對象,分別為這兩個對象的typeName字段賦值,最后通過Console.WriteLine()向控制臺中輸出typeName字段的值。在輸出圖書類型時,上面的兩種方式都是正確的,第一種方式是通過占位符來輸出的,第二種方式是直接輸出。
運行Program.cs文件,控制臺的輸出結果如下。
第一本圖書類型:校園小說 第二本圖書類型:旅游雜志
- Functional Python Programming
- Learning Cython Programming
- Dynamics 365 Application Development
- Python程序設計
- SSM輕量級框架應用實戰
- Hands-On Microservices with Kotlin
- Arduino家居安全系統構建實戰
- C語言開發基礎教程(Dev-C++)(第2版)
- 從Excel到Python數據分析:Pandas、xlwings、openpyxl、Matplotlib的交互與應用
- Backbone.js Testing
- Scratch從入門到精通
- JavaEE架構與程序設計
- Learning Redux
- Android 5從入門到精通
- 面向物聯網的Android應用開發與實踐