面向對象是一種設計思想,其實就是將一些功能進行封裝,使得這個功能有一個可以使用的實體。比方說狗就可以當成一個對象,其完成的功能是叫。在C#中面向對象也是一樣的,其也有三大屬性:封裝,繼承,多態。下面就來看看是如何在C#中實現的。
1、首先先說封裝:
還是以狗叫為例,其功能為叫,按照一般的寫法就會在主窗體裡面寫一下代碼就可完成
Private void button1_Click(object sender,EventArgs e)
{
MessageBox.Show("旺");
}
但對其進行封裝後就會有一下
class Dog
{
public string Shout()
{
Return "旺";
}
}
Private void button1_Click(object sender,EventArgs e)
{
Dog dog=new Dog();
MessageBox.Show(dog.Shout());
}
這樣就簡單的完成了對狗叫這個能能的封裝,這樣做是有好處的:
1)將主窗體和功能代碼分開,減少耦合
2)可以實現類內部的自由修改而不影響別的部分
3)類對外也有了清晰的可調用的接口
2、其次再來說這個繼承:
還以上面的為例,狗除了是狗它還是動物,所以動物所具有的一些東西和功能,狗都有,但是狗有的動物不一定有(比如抓兔子)。這種情況就叫狗繼承於動物。用代碼展示就是:
class Animal
{
Protected string name="";
public Animal(string name)
{
this.name=name;
}
}
class Dog:Animal
{
Public Dog():base(name)
{}
}
主函數不變,還是上面的,這樣狗類就繼承了Animal的屬性name。當然繼承還是有很多好處的,比如避免代碼的重復,使得代碼得到共享,還有利於修改和擴展。
3、最後再說多態:
所謂多態就是不同的對象可以執行不同的動作。還以叫這個動作為例,執行這個動作的可以是狗叫,貓叫等等。具體代碼如下:
Abstract class Animal
{
//叫這個動作
protected virtual void Shout();
}
class Dog:Animal
{
//狗可以執行這個動作
protected override void shout()
{
return "旺";
}
}
class Cat:Animal
{
//貓可以執行這個動作
protected override void shout()
{
return "喵";
}
}
而在主窗體上則換成以下的:
Animal animal1= new Dog();
Animal animal2= new Cat();
animal1.shout();
animal2.shout();
多態在面向對象過程的設計中應用的非常廣泛,尤其是在設計模式中,雖然我看了一點,但是基本上都是多態進行實現的。
最後總結一下:
由於面向對象程序的這些個特性使得面向對象編程有許多的優點:符合人們習慣的思維方式,易於維護和功能的擴展,代碼重用性好等等一些優點。所以這些特性就是我們學習面型對象編程的基礎,其重要性不言而喻。