物件導向課程心得Part1 | 『MickeyShiue』ASP.NET部落格

文章推薦指數: 80 %
投票人數:10人

物件導向課程心得Part1Hi guys,好一段時間沒有寫部落格了因為當兵的關係比較沒時間,原本打算退伍之後再開始寫但離退伍剩不到1個月的時間, ... 物件導向課程心得Part1 Higuys,好一段時間沒有寫部落格了 因為當兵的關係比較沒時間,原本打算退伍之後再開始寫 但離退伍剩不到1個月的時間,所以打算六日去上課 於是報名了Skilltree物件導向課程 昨天上完第一天的課程,想說稍微整理一下課程聽到的東西 順便練習寫部落格,看看自己了解多少 所以花了一點時間整理了一些東西 希望大家看了多少也有一點了解 抽象 抽象可以說是物件導向一個非常重要的概念 什麼是抽象? 今天講一個例子好了 你有5顆棒球,5顆足球,5顆籃球 今天要你分球,沒告訴你怎麼分 但是分類這個動作就是抽象的技巧 你可能會用球的種類去區分,也可能用球的顏色區分 分類是必須的,但方式並非絕對的(依據情境需求) 其實在生活中,我們都已經有抽象的能力 但是當你在寫程式的時候,我們往往就失去了這個能力 你看到ToyotaAltis你會認為是房車 你看到BMWM5你會認為是休旅車 你看到藍寶堅尼你會認為是超跑 Why?為什麼會有這樣的答案? 因為你已經抽象,你已經替他們做了分類了 所以你可能是依照價錢,外觀,性能去分類不是嗎  MSDN抽象類別介紹 抽象類別無法具體化 抽象方法隱含為虛擬方法 只有在抽象類別中才允許抽象方法宣告 抽象類別可能包含抽象方法和存取子 無法使用sealed修飾詞來修改抽象類別 在抽象方法宣告中使用static或virtual修飾詞是錯誤的 解釋 無法實體化就是不能被New abstractclassBaseClass //抽象類別 {  publicabstractvoidAbstractMethod(); //Abstractmethod } BaseClassbc=newBaseClass(); //Error //因為abstract抽象類別就是要拿來給人家繼承的,所以設計理念是不能夠被實體化 抽象方法隱含為虛擬方法,抽象方法不需要實際寫Code,只需要創立Method,凡是有{ }的方法,在C#都被認定為完整實作 abstractclassBaseClass //抽象類別 {  publicabstractvoidAbstractMethod(); //抽象方法 } classTest//一搬類別 {  publicabstractvoidAbstractMethod();//這樣是錯誤的,因為抽象的方法必須在抽象類別內,不能在一搬類別內 } 抽象類別可能包含抽象方法和存取子,可以有Method沒實作,也可以有屬性get,凡具有 abstract的修飾詞都必須要子類別override abstractclassBaseClass //抽象類別 {   protectedint_x=100;   protectedint_y=150;   publicabstractvoidAbstractMethod(); //抽象方法   publicabstractintX  {get;}//抽象存取子   publicabstractintY  {get;}//抽象存取子 } 無法使用sealed修飾詞來修改抽象類別 sealedabstractclassBaseClass //這樣是錯誤的,抽象類別的設計就是要給子類別繼承,這邊編譯器不會讓你通過 {  publicabstractvoidAbstractMethod(); //抽象方法 } sealedclassTest//一搬類別可以是用sealed,但使用後就不能被繼承 {  publicvoidMyVoid(intx) { //Code } } 在抽象方法宣告中使用static或virtual修飾詞是錯誤的 相信大家都知道,如果在方法上加上virtual修飾詞 一但該類別被繼承,有加上virtual修飾詞的方法就可以被Override 但抽象類別本來就要被繼承,abstract的屬性跟方法都要被子類別Override 所以這編譯器也不允許 以上大致上是我整理出來抽象類別的一些特性 接下來我們一起來看抽象類別的範例   abstractclassBaseClass抽象類別 { protectedint_x=100; protectedint_y=150; publicabstractvoidAbstractMethod();//抽象方法 publicabstractintX{get;}//抽象存取子 publicabstractintY{get;}//抽象存取子 } classDerivedClass:BaseClass //DerivedClass繼承BaseClass就必須實作所有abstract的方法跟屬性 { //覆寫抽象方法 publicoverridevoidAbstractMethod() { _x++; _y++; } //覆寫屬性 publicoverrideintX { get { return_x+10; } } //覆寫屬性 publicoverrideintY { get { return_y+10; } } staticvoidMain() { DerivedClasso=newDerivedClass(); o.AbstractMethod(); Console.WriteLine("x={0},y={1}",o.X,o.Y); } } //Output:x=111,y=161 後續還會有課程心得,只要整理出來就會發佈,請大家盡情期待 若以上有誤歡迎各位糾正我,謝謝 物件導向課程心得Part2 SkillTree物件導向課程 回首頁 本頁段落 抽象



請為這篇文章評分?