C#物件導向學習筆記

來源:互聯網
上載者:User

課程一:物件導向的概念。

英文縮寫: OOP。

物件導向只是面向過程的一個補充,而不是取代面向過程。

 

類、對象。類是抽象的,對象是具體的。 人是一個類,某一個人是“人”這個類的對象。和類相關的變數叫做欄位,是類的狀態。類是不佔記憶體的,對象才占記憶體。

方法:就是類能夠執行的動作,比如問好、吃飯。

類的繼承:類之間可以有繼承關係。比如電腦類可以從電器類繼承,這樣做的好處是“電腦”類,只需要定義自己特有的欄位、方法就可以啦。

物件導向的三個特徵:封裝、繼承、多態。

 

課程二:定義類。

看看這個程式,基本上包含了類的定義,類的對象的聲明、對象的欄位的賦值等等。

 

 

 

 

 

課程三:類的成員存取層級.

 

在定義類的成員是,前面有一個關鍵字,例如上面的public。Public就是指公開的意思,在程式的任意地點都可以改變該成員的值。

還有一個存取層級限制關鍵字:private 只能在類裡面才能夠改變其值。

看看這個函數:

 

如果類裡面的“方法”中參數更類的成員重名。要用this.name來指定哪個名字是類的成員名而不是參數名。看看下面的一個類的定義。其實,不同名也是可以用this關鍵字的。

 

 

課程四:物件導向 屬性。

簡化欄位的引用和賦值:因為,為了避免欄位被擅自更改,欄位要設為private。

然後針對某這欄位設定屬性。屬性裡面有set 和get 兩個動作,可以改變欄位的值。

 

 

 

課程五:建構函式:

建構函式是類的一個函數。例如在聲明類的一個對象是:Persion p1=new Person();

Person是一個類。P1是類的對象。

Person()就是person這個類的建構函式。預設是沒有參數的。

但是如果你希望你聲明的類的某個某個對象有初始值,就可以聲明建構函式並傳參數進去。建構函式可以有重載。看看下面的程式:

 

 

 

這裡說明一下,上面函數的Gender性別顯然是不可以被外界更改的。所以不能用{set;get;}這樣的話,就必須用傳統的:

 private Gender  gender;

 public Gender gender

   {

     get{return this.gender;}

   }

 

還有,在看看上面函數的兩個建構函式,裡面賦值欄位的代碼存在冗餘,這不符合編程原則DRY(Don’t Repeat Yourself)。如何解決呢,可以使用函數的嵌套調用。

如下所示:

建構函式的嵌套調用:在一個函數的後面加“:this(參數)”

 

課程 6 :類的繼承。 主要作用是類的屬性、方法的重用。例如:首先定義一個Person類,如果需要再定義一個Chinese類。那麼“中國人”類就可以從“人” 類中繼承欄位、屬性、方法的。例如下面一段代碼:

 

 

 

 

如果一個類,沒有定義父類,則它預設為object類。Object 是任何類的直接或間接父類。

子類在繼承父類的一個方法的時候,不能夠預設繼承,因為在子類中用繼承下來的方法可能是不合適的,需要更改這個方法。怎樣更改呢。

首先在父類的方法前要加virtual關鍵字。

 

 

在子類中的方法:

 

 

Chinese類是Person類的子類,Person類是object類的子類。而object是支援.ToString方法的。

所以,Person,Chinese類也是支援的。可以用覆蓋的方法,改變.ToString方法的行為。例如可以在Person 類中覆蓋object類的.ToString方法。

 

在C#中,一個類只允許有一個父類。而在C++中是可以有多個父類的。

 

父類聲明的一個建構函式,子類能否繼承呢。如果可以那又該怎樣做。

建構函式是不能夠繼承的,每個子類都必須自己聲明建構函式。

 

雖然不能夠繼承,但是子類可以調用父類的建構函式 。

Person 父類中聲明建構函式。

 

子類Chinese中聲明建構函式:

 

建構函式的使用。

 

 

 

課程七:多態

一個父類的指標,可以指向其子類的一個對象。

例如:Person p1=new Chinese();

      P1.SayHello();//如果子類和父類中有SayHello方法這是正確的引用。

如果只是子類中有這個方法,而父類中不確定有沒有這個方法,則是錯誤的。

 

 

 

課程八:多態的好處。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.