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

正文內(nèi)容

面向?qū)ο蟪绦蛟O(shè)計(jì)概述-資料下載頁(yè)

2025-08-01 14:46本頁(yè)面
  

【正文】 telephone = tel 。 } } 3 面向?qū)ο缶幊? 103 類的繼承 ?例:清潔劑 s dilute( ) apply( ) print( ) scrub( ) 變量 方法 Cleanser Detergent 繼承 s dilute( ) apply( ) print( ) 繼承 繼承 scrub( ) 覆蓋 新定義 foam() 3 面向?qū)ο缶幊? 104 構(gòu)造方法的繼承 ?子類或定義自己的構(gòu)造方法,或使用隱含構(gòu)造方法。 ?子類沒(méi)有定義構(gòu)造 方法 時(shí), 自動(dòng)繼承父類不含參數(shù)的構(gòu)造 方法 ,并在創(chuàng)建新子類對(duì)象時(shí)自動(dòng)執(zhí)行。 ?子類有自己的構(gòu)造 方法 時(shí), 創(chuàng)建新子類對(duì)象時(shí) 也要先執(zhí)行 父類不含參數(shù)的構(gòu)造 方法 ,再執(zhí)行自己的構(gòu)造 方法。 3 面向?qū)ο缶幊? 105 class Meal { Meal(){… …} } class Bread { Bread(){… …} } class Cheese { Cheese(){… …} } class Lettuce { Lettuce(){… …} } class Lunch extends Meal { Lunch(){… …} } class PortableLunch extends Lunch { PortableLunch(){… …} } class Sandwich extends PortableLunch { Bread b = new Bread()。 Cheese c = new Cheese()。 Lettuce l = new Lettuce()。 Sandwich() {… ...} public static void main(String[] args) { new Sandwich()。 } } 例: 3 面向?qū)ο缶幊? 106 構(gòu)造方法的繼承 ?注意構(gòu)造 方法 的調(diào)用順序: – 按繼承順序依次調(diào)用父類的不含參數(shù)的構(gòu)造 方法 ,直到到達(dá)本子類 – 依次執(zhí)行本子類成員對(duì)象的構(gòu)造 方法 – 最后,執(zhí)行本子類的構(gòu)造 方法 Meal( ) - Lunch( ) - PortableLunch( ) - Bread( ) - Cheese( ) - Lettuce( ) - Sandwich( ) 3 面向?qū)ο缶幊? 107 構(gòu)造方法的繼承 ?子類的構(gòu)造 方法 定義中,如要調(diào)用父類的含參數(shù)的構(gòu)造 方法 ,需用 super關(guān)鍵字,且該調(diào)用語(yǔ)句必須是子類構(gòu)造 方法 的第一個(gè)可執(zhí)行語(yǔ)句。 ?若子類 的構(gòu)造方法中沒(méi)有 super(…) 語(yǔ)句,系統(tǒng)將隱含調(diào)用父類無(wú)參數(shù)構(gòu)造方法。 ?一構(gòu)造 方法 可利用 this調(diào)用本類其他的構(gòu)造方法 ,此時(shí) this應(yīng)是第一個(gè)可執(zhí)行語(yǔ)句 3 面向?qū)ο缶幊? 108 調(diào)用父類構(gòu)造方法 ?在繼承情況下的對(duì)象初始化: – 為對(duì)象分配內(nèi)存并初始化 (0、 false、 null)。 如果沒(méi)有為類中的某些成員賦初始值, Java系統(tǒng)會(huì)為類的成員賦固定的初始值(數(shù)值變量的值為 0,布爾變量的值為 false ,未初始化的引用為 null ) 。 – 執(zhí)行每一層的類的顯式初始化。 – 執(zhí)行每一層的類的構(gòu)造方法(由于顯式或隱式調(diào)用)。 3 面向?qū)ο缶幊? 109 抽象與抽象類 ?程序員可以先創(chuàng)建一個(gè)定義共有屬性和方法的一般類,再?gòu)囊话泐惻缮鼍哂刑匦缘男骂悺? ?抽象類實(shí)際上是所有子類的公共域和公共方法的集合,而每一個(gè)子類則是父類的特殊化,是對(duì)公共域和方法在功能、內(nèi)涵方面的擴(kuò)展和延伸。 3 面向?qū)ο缶幊? 110 類繼承樹(shù) Object class abstract class class final class class Java—單重繼承 3 面向?qū)ο缶幊? 111 抽象類與最終類 ?abstract 抽象類 — 沒(méi)有具體對(duì)象的概念類 – 較高層次的概括 – 抽象類的作用是讓其他類來(lái)繼承它的抽象化的特征。 – 在程序中不能用抽象類作為模板來(lái)創(chuàng)建對(duì)象。 ?final 最終類 — 該類不能有子類 。 電話卡類 無(wú)卡號(hào)類 有卡號(hào)類 磁卡 IC卡 校園 201卡 IP卡 200卡 3 面向?qū)ο缶幊? 112 抽象類與最終類 abstract class PhoneCard { …… } class Number_PhoneCard extends PhoneCard { …… } final class D200_Card extends Number_PhoneCard{ ……. } ?抽象類經(jīng)常要包含某些抽象方法(方法的具體實(shí)現(xiàn)要在子類中實(shí)現(xiàn))。 ?final可以與 abstract一起使用嗎? 3 面向?qū)ο缶幊? 113 抽象方法 ?abstract 抽象方法 僅有方法頭而沒(méi)有方法體的方法,為該類的子類定義一個(gè)方法的接口標(biāo)準(zhǔn)。 abstract void performDial () 。 一個(gè)抽象類的子類如果不是抽象類,則它必須為父類中的所有抽象方法書(shū)寫(xiě)方法體。 非抽象方法 抽象方法 ? ? X ? 一般類 抽象類 3 面向?qū)ο缶幊? 114 最終方法 ?final 最終方法 – 不能被當(dāng)前類的子類重新定義的方法。 – 子類不能再重新定義與此方法同名的自己的方法,而僅能使用從父類繼承來(lái)的方法。只能繼承但不能修改。 ?固定了這個(gè)方法所對(duì)應(yīng)的具體操作,可以防止子類對(duì)父類關(guān)鍵方法的錯(cuò)誤的重定義,保證了程序的安全性和正確性。 3 面向?qū)ο缶幊? 115 電話卡 域: 余額 方法:撥打電話 查詢余額 無(wú)卡號(hào)電話卡 域: 對(duì)應(yīng)電話機(jī)型號(hào) 方法: 獲得電話機(jī)型號(hào) 有卡號(hào)電話卡 域:卡號(hào),密碼接 入號(hào)碼,接通 方法: 登錄交換機(jī) 繼承 繼承 電話磁卡 域: 使用地域 方法: 撥打電話 200卡 域: 附加費(fèi) 方法:修改密碼 撥打電話 IP卡 域: 失效日期 方法: 撥打電話 電話 IC卡 域: 方法: 撥打電話 繼承 繼承 繼承 繼承 類繼承圖 變量的繼承與擴(kuò)充 3 面向?qū)ο缶幊? 116 變量的繼承與擴(kuò)充 double balance。 long cardNumber。 int password。 String connectNumber。 boolean connect。 double additoryFee。 D200_Card類 double balance。 long cardNumber。 int password。 String connectNumber。 boolean connect。 Number_ PhoneCard類 double balance PhoneCard類 3 面向?qū)ο缶幊? 117 變量的隱藏 class D200_Card extends Number_PhoneCard { double additoryFee。 //新增 double balance。 //隱藏 boolean performDial() { if( balance ( + additoryFee )) { balance = ( + additoryFee)。 return true。 } else return false。 } } 定義自己的變量 隱藏了父類變量 balance balance 3 面向?qū)ο缶幊? 118 變量的隱藏 ? 如何訪問(wèn)被隱藏的父類的變量: – 調(diào)用從父類繼承的方法操作的是從父類繼承的變量 。 – 使用 。 class test { public static void main(String[] args){ a a1 = new a()。 ()。 1 b b1 = new b()。 ()。 1 1 100 }} class a { int x = 1。 void print(){ (x)。 } } class b extends a{ int x=100。 void print(){ (= + )。 ()。 (x= + x)。 }} 3 面向?qū)ο缶幊? 119 方法覆蓋 (overriding) ? 在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,子類可以把從父類那里繼承來(lái)的某個(gè)方法改寫(xiě),形成同父類方法同名、解決的問(wèn)題也相似、但具體實(shí)現(xiàn)和功能卻不盡一致的新方法。 ? 定義與父類完全相同的方法,實(shí)現(xiàn)對(duì)父類方法的覆蓋: – 完全相同的方法名 – 完全相同的參數(shù)列表 – 完全相同類型的返回值 – 注意:在滿足上述三個(gè)條件同時(shí),還必須保證:訪問(wèn)權(quán)限不能縮小,拋出的例外要相同 ? 三個(gè)條件有一個(gè)不滿足 , 就不是方法的覆蓋 , 而是子類自己定義與父類無(wú)關(guān)的方法 , 父類的方法未被覆蓋 , 因而仍然存在 。 ? 調(diào)用父類被覆蓋的方法 — 3 面向?qū)ο缶幊? 120 方法覆蓋 抽象方法的實(shí)現(xiàn) ? PhoneCard類抽象了一個(gè)其子類共有的方法: abstract boolean performDial()。 ? 這個(gè)方法代表的相同功能(撥打電話),但在不同種類的電話卡中,其具體實(shí)現(xiàn)是不同的。不同的子類可以重新定義該方法。 ? 但是所有的類中,凡是實(shí)現(xiàn)撥打電話這種功能的方法,盡管內(nèi)容不同,卻共享相同的名字 ——performDial ? 由于同名的不同方法是屬于不同的類,所以只需在調(diào)用方法時(shí)指明是哪個(gè)類的方法即可區(qū)分(類名 .方法名或?qū)ο竺?.方法名)。 3 面向?qū)ο缶幊? 121 方法的覆蓋 abstract PhoneCard類: abstract boolean performDial()。 double getBalance() abstract Number_PhoneCard類: abstract boolean performDial()。 double getBalance() boolean performConnection(long ,int pw) final D200_Card類: boolean performDial() 覆蓋 實(shí)現(xiàn)抽象方法 double getBalance() 覆蓋 實(shí)現(xiàn)細(xì)節(jié)不同 boolean performConnection(long ,int pw) 3 面向?qū)ο缶幊? 122 方法重載 /方法覆蓋 /變量隱藏 ?方法的覆蓋與方法重載的區(qū)別 – 重載:一個(gè)類中,同名方法(參數(shù)不同) – 覆蓋:子類對(duì)父類方法的覆蓋(不同類的同名方法) ?方法的覆蓋與變量的隱藏的區(qū)別: – 子類隱藏父類的變量只是使之不可見(jiàn),父類的同名變量在子類對(duì)象中仍然占有自己獨(dú)立的內(nèi)存空間; – 而子類方法對(duì)父類同名方法的覆蓋將清除父類方法占用的內(nèi)存,從而使父類方法在子類對(duì)象中不復(fù)存在。 3 面向?qū)ο缶幊? 123 類的初始化 靜態(tài)初始化器 ? 由關(guān)鍵字 static引導(dǎo)的一對(duì)大括號(hào)括起的語(yǔ)句組 。 用來(lái)完成類的初始化的工作 , 作用與構(gòu)造方法相似 ? 與構(gòu)造方法的區(qū)別: – 構(gòu)造方法是對(duì)每個(gè)新創(chuàng)建的對(duì)象初始化 , 而靜態(tài)初始化器
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1