抽象类别AbstractClass.PPT

  1. 1、本文档共87页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
抽象类别AbstractClass

抽象類別與介面 第 12 章 本章重點 12 - 1 抽象類別 (Abstract Class) 12 - 2 介面 ( Inter face) 12 - 3 介面的繼承 12 - 4 綜合演練 12 - 1 抽象類別 (Abstract Class) 回頭看看上一章中提到多層的繼承時, 所與的圖形類別範例, 在 Shape、Circle、Cylinder 、Rectangle 這幾個類別中, Shape 這個類別其實並未被主程式用到, 而其存在的目的只是為了讓整個繼承結構更完善。 實際上 Shape 只是一個抽象的概念, 程式中並不會有 Shape 的物件, 而只會使用它的衍生類別如 Circle、Rectangle 等, 來建立物件。因此, 我們需要一種方法, 可以讓類別的使用者知道, Shape 這個類別並不能用來產生物件。 抽象類別 (Abstract Class) 12-1-1 甚麼是抽象類別? 12-1-2 抽象方法 (Abstract Method) 12-1-3 抽象類別、抽象方法與繼承關係 12-1-1 甚麼是抽象類別? 為了解決上述的問題, Java 提供抽象類別 (Abstract Class) 的機制, 其用途即是讓我們標註某個類別僅是抽象的概念, 不應該用以產生物件。只要在類別的名稱之前加上 abstract存取控制字符, 該類別就會成為抽象類別, Java編譯器將會禁止任何產生此物件的動作。舉例來說, 在上述的範例中, Shape 類別就很適合更改為抽象類別, 因為這此類別不代表具體的物件, 真正的物件必須由其子類別產生。因此, 程式就可以改成這樣: 甚麼是抽象類別? 由於抽象類別不能建立物件, 因此只要程式中有任何地方想要建立抽象類別的物件, 在編譯時, 就會出現錯誤, 例如以下的範例: 甚麼是抽象類別? 甚麼是抽象類別? 如上所示, 一旦在類別定義前加上 abstract 將其宣告為抽象類別後, 在程式中要建立該類別的物件就會被視為錯誤。 12-1-2 抽象方法 (Abstract Method) 同樣的道理, 在上一章所舉的計算地價的程式範例中, Land 類別也可視為是一個抽象的概念, 表示某種形狀的土地, 真正能用來計算地價時, 都是使用其子類別 Circle、Square 等所建立的物件。因此, Land 也是標註為抽象類別的好對象: 抽象方法 (Abstract Method) 不過讓我們仔細思考一下, Land 這個抽象類別和前述圖形類別 Shape 有些微的不同。在 Shape 類別中所定義的建構方法或其它方法, 是其子類別所共同需要的且會實際呼叫使用的;可是在 Land 類別中, 其定義的 area() 方法, 本身並不執行任何動作, 它的存在只是為了確保所有 Land 的衍生類別都會有 area() 方法而已, 至於各衍生類別 area() 方法實際要進行什麼動作, 則是由各衍生類別自行依本身的特性定義之。 抽象方法 (Abstract Method) 但是因為方法的定義一定要包含有主體區塊, 所以在 Land 類別中的 area() 方法就定義成很無聊的傳回 0。 在 Java 中, 對於這種性質的方法, 可以將之標註為抽象方法 (AbstractMethod) , 如此一來, 就只需要定義方法的名稱以及所需要的參數及傳回值的型別即可, 而不需要定義其主題區塊的內容。 抽象方法 (Abstract Method) 標註的方法很簡單, 就和抽象類別的標註方式一樣, 只要在方法名稱之前加上abs t ract 存取控制字符即可。同樣以 Land 類別為例: 抽象方法 (Abstract Method) 抽象方法 (Abstract Method) 抽象方法 (Abstract Method) 抽象方法 (Abstract Method) 抽象方法 (Abstract Method) 抽象方法 (Abstract Method) 第 2 行就是加上 abstract 標註的 area() 方法, 由於不需要定義其主體區塊,所以要記得在右括號之候補上一個分號 ( ; ), 表示這個敘述的結束。 使用抽象方法時, 要特別注意, 擁有抽象方法的類別一定要標註為抽象類別。這道理很簡單, 抽象方法代表的意義是這個方法要到子類別才會真正實作, 既然如此, 就表示其所屬的類別並不完整, 自然就不應該拿來產生物件使用, 所以必須為抽象類別。 抽象方法 (Abstract Method) 但是反過來說, 一個抽象類別卻未必要擁有抽象方法, 像是前面介紹的Shape 類別就未定義抽象方法。 12-1-3 抽象類別、抽象方法 與繼承關

文档评论(0)

2105194781 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档