物件導向(Object Oriented,OO)的相關知識學習了很多了,這篇部落格我從C#實現物件導向的理論來做個初步的總結。
在這篇部落格中,我通過一個例子講述了,物件導向中,類,類的執行個體化,構造方法,方法重載,類的屬性,封裝和繼承,這些概念的代碼實現。首先我們再次瞭解這些名詞的相關知識。
類:就是具有相同屬性和功能的對象的集合。
構造方法:就是對類進行初始化。如果不編碼則系統將預設產生空的構造方法。
方法重載:提供了建立同名的多個方法的能力,但是這些方法需要有不同的參數類型。他可以在不改變原方法的基礎上增加新功能。
屬性:適合於以欄位的方式使用方法調用的場合,這裡欄位是儲存類要滿足其設計所需要的資料。
封裝:每個對象都包含他能進行操作的所有資訊。封裝可以減少耦合,類的內部可以修改,可以使類具有清晰的對外介面。
繼承:如果子類繼承父類,第一子類擁有父類非private的屬性和功能;第二,子類具有自己的屬性和功能,即子類可以擴充父類沒有的屬性和功能,還可以以自己的方式實現父類的功能(方法重寫)。
下邊我們看這個例子來對上邊的知識點進行深一步理解:
namespace WindowsFormsApplication3{ public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e)//單擊貓叫按鈕的事件方法 { Cat cat = new Cat("咪咪"); //類的執行個體化 cat.ShoutNum1 = 7; MessageBox.Show(cat.shout()); } private void button2_Click(object sender, EventArgs e) //單擊狗叫的按鈕的事件方法 { Dog dog = new Dog("旺財");//這裡只是簡單的調用方法,即可實現目的,體現了封裝的特性 dog.ShoutNum1 = 6; MessageBox.Show(dog.shout()); } } class Animal//聲明一個父類 { protected string name = "";//聲明類的的私人字串變數name public Animal(string name)//定義cat類的構造方法,參數是輸入一個字串 { this.name = name;//將參數賦值給私人變數 } public Animal()//將構造方法重載 { this.name = "無名"; } protected int shoutNum1 = 3;//聲明一個內部字元段,預設值3, public int ShoutNum1//屬性的設定 { get//get表示外界調用屬性的值 { return shoutNum1; } set//set表示外界可以給屬性的賦值 { shoutNum1= value; } } } class Cat : Animal//子類貓,使用了繼承的機制,繼承了Animal父類 { public Cat(): base() { } public Cat(string name) : base(name) { } public string shout() { string result = ""; for (int i = 0; i < shoutNum1; i++) { result += "喵"; } return "我的名字叫" + name + " " + result; } } class Dog : Animal//子類狗,繼承父類Animal { public Dog() : base() { } public Dog(string name) : base(name) { } public string shout() { string result = ""; for (int i = 0; i < shoutNum1; i++) { result += "汪"; } return "我的名字叫" + name + " " + result; } } }
看裡邊的注釋即非常清楚,下邊我們看看輸出的結果:
這是一個非常簡單的例子,但是對於我們初學者,來理解物件導向的一些概念,還有這些概念如何?還是非常有協助的。這些都是基礎基礎的東西,尤其是學習下一階段大話設計的必備知識!