物件導向課程心得Part1 | 『MickeyShiue』ASP.NET部落格
文章推薦指數: 80 %
物件導向課程心得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物件導向課程 回首頁 本頁段落 抽象
延伸文章資訊
- 1物件導向入門篇 - KingKong Bruce記事
NET Framework中,談物件導向的資料不多,但物件導向又很重要,在寫或設計物件導向,本身需要有高度「抽象化」的能力,而且絕大部份都是使用C#在談。
- 2物件導向課程心得Part1 | 『MickeyShiue』ASP.NET部落格
物件導向課程心得Part1Hi guys,好一段時間沒有寫部落格了因為當兵的關係比較沒時間,原本打算退伍之後再開始寫但離退伍剩不到1個月的時間, ...
- 3ASP.NET Object Oriented Programming 物件導向程式開發筆記
筆記關於ASP.NET 物件導向開發的常見的名詞與使用情境. logo. 說明. 物件導向的程式設計,是以物件的互動的方式進行開發,可以提升程式的可維護性, ...
- 4物件導向程式設計- Visual Basic - Microsoft Learn
解構函式是用來解構類別的執行個體。 在.NET Framework 中,記憶體回收行程會自動管理應用程式中Managed 物件的記憶體配置及釋放。 不過,您可能仍然 ...
- 5VB.NET 的物件導向程式設計(一) - 隨便寫寫的新天地- 痞客邦
物件導向程式設計Object Oriented Programming (OOP)◎ 抽象Abstraction◎ 封裝Encapsulation◎ 多型Polymorphism◎ 繼承In.