C#學習日記13---類別(Class)的聲明與定義
類作為面向對象的靈魂,在C#中有著相當廣泛和深入的應用,對類的深度掌握自然是我們學習C#重要的一個環節.有關類的意義上一篇 C#學習日記12---引用類型中已經給了,這裡就不再重複了.說到類就不得不說下與之息息相關的內容----對象.
類與對象:
類: 從具有相同屬性的當中抽象化事物出來的概念,一般用來描述同類個體的集合。
對象: 從類當中具體化的一個個體。 (例如人類就是一個類別, 張三 就是人類中的一個物件)
屬性:用來描述物件特徵的。 (在類別內,是類別的資料成員^_^)
方法: 說明物件所擁有的能力。 (在類別裡面,是類別的資料成員^_^,在C/C++中它叫函數,以後要改口啦)
事件: 具有觸發能力的函數. 事件是被動,由外在事物發出,受動者是物件; 而方法是由物件主動發出的動作,是類別的資料成員)
類別的定義:
類別的定義則以 class的名稱。類別的主體,包含在一對花括號內。
访问修饰符 class 类名 { 访问修饰符数据成员; }
舉個例子:
public class Student { private string name; private int age; }
訪問類別內的資料成員方式與 Struct類型 一樣,您要使用(.)點運算子(連結了物件的名稱和成員的名稱),對於存取修飾符,這裡對private、public、internal 稍微說一下(以後我會細說吧):
private: 私有存取。只限於本類成員訪問,子類,實例(對象)都不能訪問 (換句話說供類自身調用)。
public: 公有存取。不受任何限制,所有類別都可存取。
internal: 同一個程序集中的所有類別均可訪問,可以想像成Public 的其中一個程序集集合。
如果沒有指定存取修飾符,相關的存取權限就會使用預設權限,類別的預設權限是internal, 成員的預設權限是private; 所以當我們以後出現了有關存取權限問題的時候,記得看看是不是沒指定存取修飾符或使用不適當。
創建物件:
也可說是針對類別進行物件實例化,並需採用 new 語句。拿上面定義好的類別舉例子Student stu = new Student(); 此時會呼叫Student類別當中的建構方法(函數,通俗的理解為初始化函數吧,以後在說構造函數與析構函數),如果沒有預設將資料成員賦值為0;
下面就寫個列子:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test { //定义的一个类,类名叫People public class People { //全部指定为公有成员 public string name; public char sex; public uint age; } class Program { static void Main(string[] args) { People person = new People(); //实例化一个类,对象名叫 person Console.WriteLine("输入姓名: "); person.name = Console.ReadLine(); // 全部轻松访问,没有压力 Console.WriteLine("请输入性别:"); person.sex = Console.ReadKey().KeyChar; //char 类型转换 Console.WriteLine("\n请输入年龄:"); person.age = uint.Parse(Console.ReadLine()); //强制类型转换 Console.WriteLine("您的姓名是:{0}\t您的性别是:{1}\t您的年龄是:{2}",person.name,person.sex,person.age); } } }
運行下:
看完上面寫的程式碼,發現 這與 Struct類型 的程式中確實沒有差別(所有成員都是Public),看下面這個:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test { //定义的一个类,类名叫People public class People { //全部指定私有成员 private string name; private char sex; private uint age; //定义public 方法作用是输入与输出 public void input() { Console.WriteLine("输入姓名: "); name = Console.ReadLine(); Console.WriteLine("请输入性别:"); sex = Console.ReadKey().KeyChar; //char 类型转换 Console.WriteLine("\n请输入年龄:"); age = uint.Parse(Console.ReadLine()); //强制类型转换 } public void output() { Console.WriteLine("您的姓名是:{0}\t您的性别是:{1}\t您的年龄是:{2}",name, sex,age); } } class Program { static void Main(string[] args) { People person = new People(); //实例化一个类,对象名叫 person person.input(); //通过调用 public 方法访问privat 成员并赋值 person.output(); //此时无法使用直接使用 Console.WriteLine(person.name)输出,访问权限不够 } } }
運行過於上面一模一樣,在class類別中我們可以定義方法,(上面的input與output是兩個方法)而在Struct 結構體中不能定義方法,而且我們將People類別中的屬性指定為private 私有成員,外界物件person無法直接存取,只能透過People中指定的Public方法存取。舉個例子: 當我倆打電話的時候,我倆並沒有面對面的交流,而是透過手機這個媒介相互交換訊息,此時手機就可以看作你的一個public方法,你就是一個類中私有成員,我就是這個類別實例化的一個物件。
以上就是C#學習日記13---類(Class)的聲明與定義的內容,更多相關內容請關注PHP中文網(www.php.cn)!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

熱門話題

使用 C# 的 Active Directory 指南。在這裡,我們討論 Active Directory 在 C# 中的介紹和工作原理以及語法和範例。

多線程和異步的區別在於,多線程同時執行多個線程,而異步在不阻塞當前線程的情況下執行操作。多線程用於計算密集型任務,而異步用於用戶交互操作。多線程的優勢是提高計算性能,異步的優勢是不阻塞 UI 線程。選擇多線程還是異步取決於任務性質:計算密集型任務使用多線程,與外部資源交互且需要保持 UI 響應的任務使用異步。
