瞭解下C# 類(Class)
導讀 | 當你定義一個類時,你定義了一個資料型別的藍圖。這實際上並沒有定義任何的資料,但它定義了類的名稱意味著什麼,也就是說,類的物件由什麼組成及在這個物件上可執行什麼操作。物件是類的例項。構成類的方法和變數稱為類的成員。 |
類的定義是以關鍵字 class 開始,後跟類的名稱。類的主體,包含在一對花括號內。下面是類定義的一般形式:
class class_name { // member variablesvariable1;variable2; ...variableN; // member methodsmethod1(parameter_list) { // method body }method2(parameter_list) { // method body } ...methodN(parameter_list) { // method body } }
請注意:
- 訪問識別符號 指定了對類及其成員的訪問規則。如果沒有指定,則使用預設的訪問識別符號。類的預設訪問識別符號是 internal,成員的預設訪問識別符號是 private。
- 資料型別 指定了變數的型別,返回型別 指定了返回的方法返回的資料型別。
- 如果要訪問類的成員,你要使用點(.)運算子。
- 點運算子連結了物件的名稱和成員的名稱。
下面的例項說明了目前為止所討論的概念:
例項
using System; namespace BoxApplication { class Box { public double length; // 長度 public double breadth; // 寬度 public double height; // 高度 } class Boxtester { static void Main(string[] args) { Box Box1 = new Box(); // 宣告 Box1,型別為 Box Box Box2 = new Box(); // 宣告 Box2,型別為 Box double volume = 0.0; // 體積 // Box1 詳述 Box1.height = 5.0; Box1.length = 6.0; Box1.breadth = 7.0; // Box2 詳述 Box2.height = 10.0; Box2.length = 12.0; Box2.breadth = 13.0; // Box1 的體積 volume = Box1.height * Box1.length * Box1.breadth; Console.WriteLine("Box1 的體積: {0}", volume); // Box2 的體積 volume = Box2.height * Box2.length * Box2.breadth; Console.WriteLine("Box2 的體積: {0}", volume); Console.ReadKey(); } } }
當上面的程式碼被編譯和執行時,它會產生下列結果:
Box1 的體積: 210 Box2 的體積: 1560
類的成員函式是一個在類定義中有它的定義或原型的函式,就像其他變數一樣。作為類的一個成員,它能在類的任何物件上操作,且能訪問該物件的類的所有成員。
成員變數是物件的屬性(從設計角度),且它們保持私有來實現封裝。這些變數只能使用公共成員函式來訪問。
讓我們使用上面的概念來設定和獲取一個類中不同的類成員的值:
例項
using System; namespace BoxApplication { class Box { private double length; // 長度 private double breadth; // 寬度 private double height; // 高度 public void setLength( double len ) { length = len; } public void setBreadth( double bre ) { breadth = bre; } public void setHeight( double hei ) { height = hei; } public double getVolume() { return length * breadth * height; } } class Boxtester { static void Main(string[] args) { Box Box1 = new Box(); // 宣告 Box1,型別為 Box Box Box2 = new Box(); // 宣告 Box2,型別為 Box double volume; // 體積 // Box1 詳述 Box1.setLength(6.0); Box1.setBreadth(7.0); Box1.setHeight(5.0); // Box2 詳述 Box2.setLength(12.0); Box2.setBreadth(13.0); Box2.setHeight(10.0); // Box1 的體積 volume = Box1.getVolume(); Console.WriteLine("Box1 的體積: {0}" ,volume); // Box2 的體積 volume = Box2.getVolume(); Console.WriteLine("Box2 的體積: {0}", volume); Console.ReadKey(); } } }
當上面的程式碼被編譯和執行時,它會產生下列結果:
Box1 的體積: 210 Box2 的體積: 1560
類的 建構函式 是類的一個特殊的成員函式,當建立類的新物件時執行。
建構函式的名稱與類的名稱完全相同,它沒有任何返回型別。
下面的例項說明了建構函式的概念:
例項
using System; namespace LineApplication { class Line { private double length; // 線條的長度 public Line() { Console.WriteLine("物件已建立"); } public void setLength( double len ) { length = len; } public double getLength() { return length; } static void Main(string[] args) { Line line = new Line(); // 設定線條長度 line.setLength(6.0); Console.WriteLine("線條的長度: {0}", line.getLength()); Console.ReadKey(); } } }
當上面的程式碼被編譯和執行時,它會產生下列結果:
物件已建立 線條的長度: 6
預設的建構函式沒有任何引數。但是如果你需要一個帶有引數的建構函式可以有引數,這種建構函式叫做引數化建構函式。這種技術可以幫助你在建立物件的同時給物件賦初始值,具體請看下面例項:
例項
using System; namespace LineApplication { class Line { private double length; // 線條的長度 public Line(double len) // 引數化建構函式 { Console.WriteLine("物件已建立,length = {0}", len); length = len; } public void setLength( double len ) { length = len; } public double getLength() { return length; } static void Main(string[] args) { Line line = new Line(10.0); Console.WriteLine("線條的長度: {0}", line.getLength()); // 設定線條長度 line.setLength(6.0); Console.WriteLine("線條的長度: {0}", line.getLength()); Console.ReadKey(); } } }
當上面的程式碼被編譯和執行時,它會產生下列結果:
物件已建立,length = 10 線條的長度: 10 線條的長度: 6
類的 解構函式 是類的一個特殊的成員函式,當類的物件超出範圍時執行。
解構函式的名稱是在類的名稱前加上一個波浪形(~)作為字首,它不返回值,也不帶任何引數。
解構函式用於在結束程式(比如關閉檔案、釋放記憶體等)之前釋放資源。解構函式不能繼承或過載。
下面的例項說明了解構函式的概念:
例項
using System; namespace LineApplication { class Line { private double length; // 線條的長度 public Line() // 建構函式 { Console.WriteLine("物件已建立"); } ~Line() //解構函式 { Console.WriteLine("物件已刪除"); } public void setLength( double len ) { length = len; } public double getLength() { return length; } static void Main(string[] args) { Line line = new Line(); // 設定線條長度 line.setLength(6.0); Console.WriteLine("線條的長度: {0}", line.getLength()); } } }
當上面的程式碼被編譯和執行時,它會產生下列結果:
物件已建立 線條的長度: 6 物件已刪除
我們可以使用 static 關鍵字把類成員定義為靜態的。當我們宣告一個類成員為靜態時,意味著無論有多少個類的物件被建立,只會有一個該靜態成員的副本。
關鍵字 static 意味著類中只有一個該成員的例項。靜態變數用於定義常量,因為它們的值可以通過直接呼叫類而不需要建立類的例項來獲取。靜態變數可在成員函式或類的定義外部進行初始化。你也可以在類的定義內部初始化靜態變數。
下面的例項演示了靜態變數的用法:
例項
using System; namespace StaticVarApplication { class StaticVar { public static int num; public void count() { num++; } public int getNum() { return num; } } class StaticTester { static void Main(string[] args) { StaticVar s1 = new StaticVar(); StaticVar s2 = new StaticVar(); s1.count(); s1.count(); s1.count(); s2.count(); s2.count(); s2.count(); Console.WriteLine("s1 的變數 num: {0}", s1.getNum()); Console.WriteLine("s2 的變數 num: {0}", s2.getNum()); Console.ReadKey(); } } }
當上面的程式碼被編譯和執行時,它會產生下列結果:
s1 的變數 num: 6 s2 的變數 num: 6
你也可以把一個成員函式宣告為 static。這樣的函式只能訪問靜態變數。靜態函式在物件被建立之前就已經存在。下面的例項演示了靜態函式的用法:
例項
using System; namespace StaticVarApplication { class StaticVar { public static int num; public void count() { num++; } public static int getNum() { return num; } } class StaticTester { static void Main(string[] args) { StaticVar s = new StaticVar(); s.count(); s.count(); s.count(); Console.WriteLine("變數 num: {0}", StaticVar.getNum()); Console.ReadKey(); } } }
當上面的程式碼被編譯和執行時,它會產生下列結果:
變數 num: 3
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2885106/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 瞭解下C# 迴圈C#
- 瞭解下C# 判斷C#
- 瞭解下C# 繼承C#繼承
- 瞭解下C# 變數C#變數
- 瞭解下C# 字串(String)C#字串
- 瞭解下C# 運算子C#
- 瞭解下C# 事件(Event)C#事件
- 瞭解下C# 介面(Interface)C#
- 瞭解下C# 陣列(Array)C#陣列
- 瞭解下C# 索引器(Indexer)C#索引Index
- 瞭解下C# 屬性(Property)C#
- 瞭解下C# 程式結構C#
- 瞭解下C# 委託(Delegate)C#
- 瞭解下C# 多執行緒C#執行緒
- 瞭解下C# 異常處理C#
- 瞭解下C# 正規表示式C#
- 瞭解下C# 型別轉換C#型別
- 瞭解下C# 資料型別C#資料型別
- 瞭解下C# 運算子過載C#
- 瞭解下C# 結構體(Struct)C#結構體Struct
- 瞭解下C# 可空型別(Nullable)C#型別Null
- 瞭解下C# 前處理器指令C#
- 瞭解下C# 名稱空間(Namespace)C#namespace
- 瞭解下C# 不安全程式碼C#
- 瞭解下C# 檔案的輸入與輸出C#
- 大致瞭解下websocketWeb
- Laravel bootstraper 瞭解下Laravelboot
- 瞭解下WSDL 埠
- 瞭解下Foundation JoyrideIDE
- 瞭解下RSS 元素
- 瞭解下Foundation 表格
- 瞭解下RDF 主要元素
- 瞭解下RDF 容器元素
- 瞭解下Foundation 按鈕
- C#由轉換二進位制所引起的思考,瞭解下?C#
- 深入瞭解下replace函式函式
- 瞭解下ECharts 配置語法Echarts
- 瞭解下Foundation 按鈕組