1. 程式人生 > >C#實戰學習(五)——面向物件(類)

C#實戰學習(五)——面向物件(類)

  大家還記得我們學習UML的時候的面向物件程式語言設計麼?當時學了面向物件是如何的好,如何的棒,如何的呱呱叫,從面向物件的三大特徵(多型性、封裝性、繼承性),一直說他是如何的好,給別人說他是多麼的好,可是真的沒有什麼體會,最近學習了C#的一些方法,才知道確實不錯。

   先回顧一下什麼是我以前的總結吧!連結:面向物件與面向過程

一個思維導圖:


1.面向物件,什麼是物件?相同物件的集合又是什麼?

物件:一個自包含的實體,用一組可識別的的特性和行為標識,是一個能夠看得到、摸得著、特指的具體的實體。

物件:假如世界上就一個馮佳興,我看的見,摸得著、我特指我自己,一個具體具體的帥小夥子。我身高180 ,體重、、、面板是黑色的,我正在學習C#語言。

我的名字叫馮佳興、我有身高,這些都是我的一些特徵屬性、身高180cm,180是我的屬性值,我的面板是黑色的,黑色也是我的屬性值。我正在學習C#語言,這是我的行為,我正在做的事情

類:是模子是一個模板,確定將會擁有的的特徵(屬性)和行為(方法)。就是具有相同屬性和功能物件的抽象集合。

 例如人類、全世界叫馮佳興的人,提高班的全體成員。共享汽車,共享單車等。

類和物件的區別:物件是類的例項化,類是物件的型別,我們知道類是抽象的,使用時需要將其例項化,就是將類變成一個真實的物件。 

2.如何定義一個類:

[訪問修飾符]  class 類名   //訪問修飾符包括:Public private 、internal Protected等一般欄位前面都是private
{ 成員(包括類的欄位_name,_age、方法、屬性(name, age)等)欄位和屬性的區別是欄位多一個_ }

類的例項化:類只是個模板,用模板“造”出物件的過程就是例項化,實質上是分配記憶體空間,並且初始化資料。

關鍵字new   語法:  類 例項名 =new 類();

類成員的訪問:例項名.屬性    例項名.方法名();


3.構造方法:又叫建構函式,說白了就是對類的初始化。構造方法要與類同名,並且沒有返回值,在new裡面呼叫。

為什麼初建構函式?

我們給初始化一個物件的時候,要對其進行賦值,如果一一對其進行賦值將會產生大量的程式碼,所以我們需要建構函式,這樣可以隨意改動物件的值,不需要在函式裡面自己改動。

例子;

namespace 構造類函式
{
    public class Person
    {
        private string _name;//宣告一個Person類的私有字串欄位_name
        private char _gender;//宣告一個Person類的私有char型別的欄位_name
        private int _age;//宣告一個Person類的私有數值型欄位_name
        public Person(string name,char gender,int age)//定義Person類構造方法,引數分別是輸入一個字串、一個性別、一個年齡
        {
            this._name = name;//this為指示代詞,將該人的屬性值分別賦值給欄位
            this._gender = gender;
            this._age = age;
        }
        public void Show()//一種顯示個人資訊的方法
        {
            Console.WriteLine("我叫{0},性別{1},年齡{2}", _name, _gender, _age);
        }      
    }
}
namespace 構造類函式
{
     public class Program
    {
        static void Main(string[] args)
        {
            Person per = new Person("佳興",'男',18);//宣告一個名為per的物件、將其例項化、並給欄位賦值
            per.Show();
            Console.ReadKey();
        }
    }
}

附註:寫一個類,如果沒有建構函式,系統會預設有一個空的建構函式,當你構造新的函式時,該函式將會被幹掉。


3.1建構函式的過載

   為什麼要進行過載?

   目的是建立同名的多個方法的能力,但是這些方法需要使用不同的引數型別(引數型別或個數必須要有所不同),其實就一個目的,就是在原方法的基礎之上給他增加新功能。


4.namespace(名稱空間)

 4.1為什麼需要名稱空間?

用於解決類重名的問題,可以看做“類的資料夾”名稱空間的設計目的是提供一種讓一組名稱與其他名稱分隔開的方式。在一個名稱空間中宣告的類的名稱與另一個名稱空間中宣告的相同的類的名稱不衝突。

例子:個人理解:我們每個人都是不同的物件,所有的物件的型別定義都必須在某個名稱空間下定義,所有的方法都必須包含型別定義中。例如馮佳興某一個身體部位(手),叫我給他命名就叫馮佳興的手,只能在我個人這個空間給他命名。再比如小明的手,雖說都是手,但是我們兩個的手不一樣。

  好比不同的資料夾下有兩個相同的名字。我們不能說這兩個名字相同。但是呼叫的時候,因為名字相同,為了便於區分,我們需要加上他們的資料夾。

  4.2通過名稱空間是實現專案類的呼叫

例如08專案想呼叫01專案的program.cs這個類。首先新增引用01面向物件專案



今天就先寫下這麼多吧,不知道部落格的篇幅長還是短?希望大家提出建議,我將做好適當的調整和修改,方便大家瀏覽!