類的定義 類是描述具有相同特征與行為的事物的抽象,類內部包含類的特征和類的行為 類支持繼承 類的定義是關鍵字class為標誌 類的格式 訪問標識符 class 類名 { 類主體 } 訪問標識符:指定了類及其成員的訪問規則。如果不指定則使用預設的標識符 類的預設標識符為internal,而類成員的預設 ...
類的定義
類是描述具有相同特征與行為的事物的抽象,類內部包含類的特征和類的行為
類支持繼承
類的定義是關鍵字class為標誌
類的格式
訪問標識符 class 類名
{
類主體
}
訪問標識符:指定了類及其成員的訪問規則。如果不指定則使用預設的標識符
類的預設標識符為internal,而類成員的預設訪問標識符為private
類的主體:定義行為和數據,類的欄位、屬性、方法和事件統稱為類成員
類中函數和封裝
類的成員函數是一個在類定義中有它的定義或原型的函數。作為類的一個成員,它能在類的任何對象上操作,且能訪問該對象的類的所有成員
成員變數是對象的屬性(從設計角度),且它們保持私有來實現封裝
這些變數只能使用公共成員函數來訪問
具體封裝的過程參考上篇博文C#-方法(八)
類中構造函數
構造函數主要是用來創建對象時為對象賦初值來初始化對象。總與new運算符一起使用在創建對象的語句中
構造函數具有和類一樣的名稱,但它是一個特殊的函數,同一個類裡面可以有多個參數不同的構造函數,也就是函數的多態
構造函數沒有返回值,也不能用void修飾,只有訪問修飾符
每個類中都會一個構造函數,如果用戶定義沒有定義,編譯器就會自動為該類型生成預設構造函數
預設的構造函數沒有任何參數
構造函數目的是用於初始化類
示例
1 namespace 構造函數 2 { 3 class Animal 4 { 5 //構造函數 6 public Animal(string name, string color, int speed) 7 { 8 this.name = name; 9 this.color = color; 10 this.speed = speed; 11 } 12 13 //名稱 14 private string name; 15 public string Name 16 { 17 get { return name; } 18 set { name = value; } 19 } 20 //顏色 21 private string color; 22 public string Color 23 { 24 get { return color; } 25 set { color = value; } 26 } 27 28 //速度 29 private int speed; 30 public int Speed 31 { 32 get { return speed; } 33 set { speed = value; } 34 } 35 36 //主函數中創建類,獲取構造函數中的屬性 37 static void Main(string[] args) 38 { 39 Animal Tiger = new Animal("BigTiger", "yellow", 20); 40 Console.WriteLine("名字叫{0}身上的顏色是{1}行進速度為{2}", Tiger.Name, Tiger.Color, Tiger.Speed); 41 } 42 } 43 }
結果
類中析構函數
析構函數用於釋放被占用的系統資源
析構函數的名字由符號“~”加類名組成
析構函數只能被自動調用
一個類只能有一個析構函數
析構函數沒有任何修飾符、沒有任何參數、也不返回任何值
析構函數不能繼承或重載
構造函數VS析構函數
構造函數和析構函數是在類中說明的兩種特殊的成員函數
構造函數是在創建對象時,使用給定的值將對象初始化
析構函數用於釋放一個對象。在對象刪除前,使用析構函數做一些清理工作,它與構造函數的功能正好相反
示例
1 using System; 2 namespace AgeApplication 3 { 4 class Age 5 { 6 private int number; // 線條的長度 7 public Age() // 構造函數 8 { 9 Console.WriteLine("年齡已創建"); 10 } 11 ~Age() //析構函數 12 { 13 Console.WriteLine("年齡已刪除"); 14 } 15 16 public void setNumber(int Number) 17 { 18 number = Number; 19 } 20 public int getNumber() 21 { 22 return number; 23 } 24 25 static void Main(string[] args) 26 { 27 Age XiaoMing = new Age(); 28 // 設置年齡大小 29 XiaoMing.setNumber(18); 30 Console.WriteLine("小明的年齡是: {0}", XiaoMing.getNumber()); 31 } 32 } 33 }
結果
類的靜態成員
使用static關鍵字把類成員定義為靜態的
靜態變數用於定義常量,因為它們的值可以通過直接調用類而不需要創建類的實例來獲取
當把一個成員函數聲明為static。這樣的函數就只能訪問靜態變數
創建對象
類定義對象的類型,但它不是對象本身
對象是類的具體
對象是基於類的具體實體,也稱為類的實例
通過使用new關鍵字,後跟對象將基於的類的名稱,可以創建對象
格式: 類名 對象名 = new 類名()
例:有一個 public class Student{類主體}的類
創建對象:Student XiaoMing = new Student();
創建類的實例後,對象可以獲得類的屬性