freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

java多形性ppt課件-資料下載頁

2024-10-19 04:52本頁面
  

【正文】 WithInner$ 如果內(nèi)部類是匿名的,那么編譯器會(huì)簡單地生成數(shù)字,把它們作為內(nèi)部類標(biāo)識(shí)符使用。若內(nèi)部類嵌套于其他內(nèi)部類中,則它們的名字簡單地追加在一個(gè) $以及外部類標(biāo)識(shí)符的后面。 這種生成內(nèi)部名稱的方法除了非常簡單和直觀以外,也非常 “ 健壯 ” ,可適應(yīng)大多數(shù)場合的要求。由于它是 Java的標(biāo)準(zhǔn)命名機(jī)制,所以產(chǎn)生的文件會(huì)自動(dòng)具備 “ 與平臺(tái)無關(guān) ” 的能力。 51 :用內(nèi)部類控制框架 ? ? ? ? 52 :構(gòu)建器的調(diào)用順序 ?對于一個(gè)復(fù)雜的對象,構(gòu)建器的調(diào)用遵照下面的順序: (1) 調(diào)用基礎(chǔ)類構(gòu)建器。這個(gè)步驟會(huì)不斷重復(fù)下去,首先得到構(gòu)建的是分級結(jié)構(gòu)的根部,然后是下一個(gè)衍生類,等等。直到抵達(dá)最深一層的衍生類。 (2) 按聲明順序調(diào)用成員初始化模塊。 (3) 調(diào)用衍生構(gòu)建器的主體。 ?看看一個(gè)例子,它展示了按構(gòu)建順序進(jìn)行合成、繼承以及多形性的效果: 53 :繼承和 finalize() ?通過 “ 合成 ” 方法創(chuàng)建新類時(shí),永遠(yuǎn)不必?fù)?dān)心對那個(gè)類的成員對象的收尾工作。每個(gè)成員都是一個(gè)獨(dú)立的對象,所以會(huì)得到正常的垃圾收集以及收尾處理 —— 無論它是不是不自己某個(gè)類一個(gè)成員。但在進(jìn)行初始化的時(shí)候,必須覆蓋衍生類中的 finalize()方法 —— 如果已經(jīng)設(shè)計(jì)了某個(gè)特殊的清除進(jìn)程,要求它必須作為垃圾收集的一部分進(jìn)行。覆蓋衍生類的 finalize()時(shí),務(wù)必記住調(diào)用 finalize()的基礎(chǔ)類版本。否則,基礎(chǔ)類的初始化根本不會(huì)發(fā)生。下面這個(gè)例子便是明證: 54 :構(gòu)建器內(nèi)部的多形性 ?從概念上講,構(gòu)建器的職責(zé)是讓對象實(shí)際進(jìn)入存在狀態(tài)。在任何構(gòu)建器內(nèi)部,整個(gè)對象可能只是得到部分組織—— 只知道基礎(chǔ)類對象已得到初始化,但卻不知道哪些類已經(jīng)繼承。然而,一個(gè)動(dòng)態(tài)綁定的方法調(diào)用卻會(huì)在分級結(jié)構(gòu)里 “ 向前 ” 或者 “ 向外 ” 前進(jìn)。它調(diào)用位于衍生類里的一個(gè)方法。如果在構(gòu)建器內(nèi)部做這件事情,那么對于調(diào)用的方法,它要操縱的成員可能尚未得到正確的初始化。 通過觀察下面這個(gè)例子 : 55 :構(gòu)建器內(nèi)部的多形性 ?前面講的初始化順序并不十分完整,而那是解決問題的關(guān)鍵所在。初始化的實(shí)際過程是這樣的: (1) 在采取其他任何操作之前,為對象分配的存儲(chǔ)空間初始化成二進(jìn)制零。 (2) 就象前面敘述的那樣,調(diào)用基礎(chǔ)類構(gòu)建器。 (3) 按照原先聲明的順序調(diào)用成員初始化代碼。 (4) 調(diào)用衍生類構(gòu)建器的主體。 56 ?學(xué)習(xí)了多形性的知識(shí)后,由于多形性是有益的一種工具,所以看起來似乎所有東西都應(yīng)該繼承。但假如過度使用繼承技術(shù),也會(huì)使自己的設(shè)計(jì)變得不必要地復(fù)雜起來。事實(shí)上,當(dāng)以一個(gè)現(xiàn)成類為基礎(chǔ)建立一個(gè)新類時(shí),如首先選擇繼承,會(huì)使情況變得異常復(fù)雜。 ?一個(gè)更好的思路是首先選擇 “ 合成 ” —— 如果不能十分確定自己應(yīng)使用哪一個(gè)。合成不會(huì)強(qiáng)迫程序設(shè)計(jì)進(jìn)入繼承的分級結(jié)構(gòu)中。同時(shí),合成顯得更加靈活,因?yàn)榭梢詣?dòng)態(tài)選擇一種類型,而繼承要求在編譯期間準(zhǔn)確地知道一種類型。請看下面的例子: 57 :純繼承與擴(kuò)展 ?學(xué)習(xí)繼承時(shí),為了創(chuàng)建繼承分級結(jié)構(gòu),最明顯的方法是采取一種 “ 純粹 ” 的手段。也就是說,只有在基礎(chǔ)類或“ 接口 ” 中已建立的方法才可在衍生類中被覆蓋,如下面這張圖所示: 58 :純繼承與擴(kuò)展 ?可將其描述成一種純粹的 “ 屬于 ” 關(guān)系,因?yàn)橐粋€(gè)類的接口已規(guī)定了它到底 “ 是什么 ” 或者 “ 屬于什么 ” 。通過繼承,可保證所有衍生類都只擁有基礎(chǔ)類的接口。如果按上述示意圖操作,衍生出來的類除了基礎(chǔ)類的接口之外,也不會(huì)再擁有其他什么。 ?可將其想象成一種 “ 純替換 ” ,因?yàn)檠苌悓ο罂蔀榛A(chǔ)類完美地替換掉。使用它們的時(shí)候,根本沒必要知道與子類有關(guān)的任何額外信息。如下所示: 59 :純繼承與擴(kuò)展 ?也就是說,基礎(chǔ)類可接收發(fā)給衍生類的任何消息,因?yàn)閮烧邠碛型耆恢碌慕涌?。我們要做的全部事情就是從衍生上溯造型,而且永遠(yuǎn)不需要回過頭來檢查對象的準(zhǔn)確類型是什么。所有細(xì)節(jié)都已通過多形性獲得了完美的控制。 ?若按這種思路考慮問題,那么一個(gè)純粹的 “ 屬于 ” 關(guān)系似乎是唯一明智的設(shè)計(jì)方法,其他任何設(shè)計(jì)方法都會(huì)導(dǎo)致混亂不清的思路,而且在定義上存在很大的困難。但這種想法又屬于另一個(gè)極端。 60 :純繼承與擴(kuò)展 ?經(jīng)過細(xì)致的研究,我們發(fā)現(xiàn)擴(kuò)展接口對于一些特定問題來說是特別有效的方案??蓪⑵浞Q為“ 類似于 ” 關(guān)系,因?yàn)閿U(kuò)展后的衍生類 “ 類似于 ” 基礎(chǔ)類 —— 它們有相同的基礎(chǔ)接口 —— 但它增加了一些特性,要求用額外的方法加以實(shí)現(xiàn)。如下所示: 61 :純繼承與擴(kuò)展 ?盡管這是一種有用和明智的做法(由具體的環(huán)境決定),但它也有一個(gè)缺點(diǎn):衍生類中對接口擴(kuò)展的那一部分不可在基礎(chǔ)類中使用。所以一旦上溯造型,就不可再調(diào)用新方法: ?若在此時(shí)不進(jìn)行上溯造型,則不會(huì)出現(xiàn)此類問題。但在許多情況下,都需要重新核實(shí)對象的準(zhǔn)確類型,使自己能訪問那個(gè)類型的擴(kuò)展方法。 62 :下溯造型 ?由于在上溯造型(在繼承結(jié)構(gòu)中向上移動(dòng))期間丟失了具體的類型信息,所以為了獲取具體的類型信息 —— 亦即在分級結(jié)構(gòu)中向下移動(dòng) —— 必須使用 “ 下溯造型” 技術(shù)。然而,我們知道上溯造型肯定是安全的;基礎(chǔ)類不可能再擁有一個(gè)比衍生類更大的接口。因此,通過基礎(chǔ)類接口發(fā)送的每一條消息都肯定能夠接收到。但在進(jìn)行下溯造型的時(shí)候,并不真的知道一個(gè)幾何形狀實(shí)際是一個(gè)圓,它完全可能是一個(gè)三角形、方形或者其他形狀。 63 :下溯造型 ?為解決這個(gè)問題,必須有一種辦法能夠保證下溯造型正確進(jìn)行。只有這樣,才不會(huì)冒然造型成一種錯(cuò)誤的類型,然后發(fā)出一條對象不可能收到的消息。這樣做是非常不安全的。 ?在 Java中,所有造型都會(huì)自動(dòng)得到檢查和核實(shí)!所以即使只是進(jìn)行一次普通的括弧造型,進(jìn)入運(yùn)行期以后,仍然會(huì)毫無留情地對這個(gè)造型進(jìn)行檢查,保證它的確是我們所希望的那種類型。如果不是,就會(huì)得到一個(gè)ClassCastException( 類造型違例)。在運(yùn)行期間對類型進(jìn)行檢查的行為叫作 “ 運(yùn)行期類型標(biāo)識(shí) ” ( runtime type identification RTTI)。 下面這個(gè)例子向大家演示了 RTTI的行為: 64 ?多形性 ?內(nèi)部類
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1