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

正文內(nèi)容

面向?qū)ο蟪绦蛟O(shè)計(jì)概述-閱讀頁(yè)

2024-08-20 14:46本頁(yè)面
  

【正文】 Circle、 Square、 Triangle均有 draw( )方法和 erase( )方法,但不同類(lèi)的方法的具體操作其實(shí)并不相同,實(shí)現(xiàn)了多態(tài)。這些方法同名的原因,是因?yàn)樗鼈兊淖罱K功能和目的都相同,但由于在完成同一功能時(shí),可能遇到不同的具體情況,所以需要定義含不同的具體內(nèi)容的方法。 ? 方法的參數(shù)必須不同(同名不同方法是靠不同形式的參數(shù)列表來(lái)區(qū)分,包括形式參數(shù)的個(gè)數(shù)、類(lèi)型、順序的不同)。 ? 利用“重名”現(xiàn)象提高程序的抽象度和簡(jiǎn)潔性。 public void println(float f)。 ?Integer類(lèi) String toString()。 ?Double 類(lèi) String toString()。 在一個(gè)類(lèi)中,不可以存在兩個(gè)只有返回值不同的方法 3 面向?qū)ο缶幊? 83 構(gòu)造方法( constructor) ?問(wèn)題的提出 – Java試圖在每個(gè)對(duì)象一誕生時(shí),就給它一確定的狀態(tài),但有時(shí)這種系統(tǒng)的缺省初值不合適;所以 在創(chuàng)建一個(gè)新對(duì)象時(shí),需用構(gòu)造方法完成合法的 初始化,使類(lèi)內(nèi)成員的初始化工作不依賴(lài)于外界 完成。 ? 構(gòu)造方法的名字就是類(lèi)的名字。 ? 主要用于完成變量的初始化;另外 ,一個(gè)類(lèi)中可以存在多個(gè)構(gòu)造方法 (重載 ),這些構(gòu)造方法之間可以互相調(diào)用 ,當(dāng)一個(gè)構(gòu)造方法調(diào)用另一個(gè)構(gòu)造方法時(shí) ,要使用關(guān)鍵字 this,同時(shí)這個(gè)調(diào)用語(yǔ)句應(yīng)該是整個(gè)構(gòu)造方法的第一條可執(zhí)行語(yǔ)句。 ? 類(lèi)對(duì)象創(chuàng)建時(shí),利用運(yùn)算符 new 在內(nèi)存中開(kāi)辟專(zhuān)用空間,存放指定的類(lèi)的實(shí)例(即對(duì)象),這時(shí)會(huì)自動(dòng)執(zhí)行類(lèi)的構(gòu)造方法,初始化新對(duì)象的成員變量。 Employee emp = new Employee(…)。 ? new運(yùn)算符為對(duì)象分配內(nèi)存空間,并返回對(duì)該對(duì)象的一個(gè)引用。 ? 一旦定義了一個(gè)構(gòu)造方法,隱含構(gòu)造方法失效! 3 面向?qū)ο缶幊? 87 定義構(gòu)造方法 Employee(String n,int a,float s){ name = n 。amp。 else { (illegal age)。 } salary = s。 } } public class SimpleConstructor { public static void main(String[] args) { for(int i = 0。 i++) new Rock(i)。 ?執(zhí)行顯式初始化 class a { private int x=10。 private MyTime mt = new MyTime() 。 //初始化電話(huà)卡號(hào) } D200_Card(long ,int pw ){//兩個(gè)參數(shù)的構(gòu)造方法 cardNumber = ; password = pw。 //三個(gè)參數(shù)的構(gòu)造方法 password = pw。 //余額 } 3 面向?qū)ο缶幊? 92 構(gòu)造方法的重載 D200_Card(long ,int pw,double b,String c) { cardNumber = 。 balance = b。 //接入號(hào)碼 } ?調(diào)用不同的構(gòu)造方法 D200_Card my200 = new D200_Card ( ) 。 D200_Card my200 = new D200_Card ( 12345678, 1234, )。 } D200_Card(long ,int pw ) { this()。 } D200_Card(long ,int pw,double b) { this(,pw)。 } D200_Card(long ,int pw,double b,String c) { this(,pw,b)。 } 3 面向?qū)ο缶幊? 94 構(gòu)造方法之間的調(diào)用 public class Employee { Employee(String n,int a,float s){ name = n 。amp。 else { (illegal age)。 } salary = s 。 } } 3 面向?qū)ο缶幊? 95 構(gòu)造方法之間的調(diào)用 ?在一個(gè)構(gòu)造方法中,當(dāng)使用 this 并給它一個(gè)參數(shù)列表時(shí), this顯式調(diào)用參數(shù)匹配的另一個(gè)構(gòu)造方法。構(gòu)造方法不是用來(lái)調(diào)用的,而是 new算符的參數(shù)。 ? 子類(lèi)繼承父類(lèi)的非私有屬性和方法,還可以定義新的屬性和方法,改寫(xiě)父類(lèi)的方法。 ? Java要求每個(gè)類(lèi)都有父類(lèi) (隱含為 Object類(lèi) )。 3 面向?qū)ο缶幊? 97 Java中類(lèi)的繼承 ?創(chuàng)建類(lèi)時(shí)指明它為某存在類(lèi)的子類(lèi) – extends 超類(lèi) /父類(lèi)名 ?父類(lèi) – 來(lái)自系統(tǒng)類(lèi)庫(kù) – 用戶(hù)自定義類(lèi) ?子類(lèi)將繼承除 private 外所有父類(lèi)成員 ?Java不支持多重繼承(但可用接口實(shí)現(xiàn)) 3 面向?qū)ο缶幊? 98 Java中類(lèi)的繼承 ?子類(lèi)對(duì)父類(lèi)可做擴(kuò)展和特殊化 – 創(chuàng)建新 的成員:變量和方法 ? m_lNextSaveAccNum, m_lNextCheckAccNum – 重新定義 父類(lèi)中已有的 變量 : 隱藏 ? m_dInterestRate – 重新定義 父類(lèi)中已有的 方法 : 覆蓋 (override ) 子類(lèi)中的方法應(yīng)與父類(lèi)中的被覆蓋的方法有完全相同的:參數(shù)列表、返回值 ? setInterestRate( ) 3 面向?qū)ο缶幊? 99 類(lèi)的繼承 ?引用類(lèi)的成員變量或方法時(shí)的前綴 – this: 當(dāng)前類(lèi)的方法或變量 – super: 直接父類(lèi)的成員(只能上溯一層) 例: BankAccount類(lèi) ? SaveAccount子類(lèi) (): 調(diào)用 子類(lèi)的收取費(fèi)用方法 (): 調(diào)用父類(lèi)的 收取費(fèi)用方法 ?子類(lèi)對(duì)象可類(lèi)型轉(zhuǎn)換成父類(lèi)對(duì)象( upcast) BankAccount MyBa = (BankAccount)MySa。 B b=new B( )。 int age 。 void upSalary(float inc) { salary = salary + inc 。 void setAllowance(float a) { allowance = a 。 void setTel(String tel) { telephone = tel 。 ?子類(lèi)沒(méi)有定義構(gòu)造 方法 時(shí), 自動(dòng)繼承父類(lèi)不含參數(shù)的構(gòu)造 方法 ,并在創(chuàng)建新子類(lèi)對(duì)象時(shí)自動(dòng)執(zhí)行。 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()。 Lettuce l = new Lettuce()。 } } 例: 3 面向?qū)ο缶幊? 106 構(gòu)造方法的繼承 ?注意構(gòu)造 方法 的調(diào)用順序: – 按繼承順序依次調(diào)用父類(lèi)的不含參數(shù)的構(gòu)造 方法 ,直到到達(dá)本子類(lèi) – 依次執(zhí)行本子類(lèi)成員對(duì)象的構(gòu)造 方法 – 最后,執(zhí)行本子類(lèi)的構(gòu)造 方法 Meal( ) - Lunch( ) - PortableLunch( ) - Bread( ) - Cheese( ) - Lettuce( ) - Sandwich( ) 3 面向?qū)ο缶幊? 107 構(gòu)造方法的繼承 ?子類(lèi)的構(gòu)造 方法 定義中,如要調(diào)用父類(lèi)的含參數(shù)的構(gòu)造 方法 ,需用 super關(guān)鍵字,且該調(diào)用語(yǔ)句必須是子類(lèi)構(gòu)造 方法 的第一個(gè)可執(zhí)行語(yǔ)句。 ?一構(gòu)造 方法 可利用 this調(diào)用本類(lèi)其他的構(gòu)造方法 ,此時(shí) this應(yīng)是第一個(gè)可執(zhí)行語(yǔ)句 3 面向?qū)ο缶幊? 108 調(diào)用父類(lèi)構(gòu)造方法 ?在繼承情況下的對(duì)象初始化: – 為對(duì)象分配內(nèi)存并初始化 (0、 false、 null)。 – 執(zhí)行每一層的類(lèi)的顯式初始化。 3 面向?qū)ο缶幊? 109 抽象與抽象類(lèi) ?程序員可以先創(chuàng)建一個(gè)定義共有屬性和方法的一般類(lèi),再?gòu)囊话泐?lèi)派生出具有特性的新類(lèi)。 3 面向?qū)ο缶幊? 110 類(lèi)繼承樹(shù) Object class abstract class class final class class Java—單重繼承 3 面向?qū)ο缶幊? 111 抽象類(lèi)與最終類(lèi) ?abstract 抽象類(lèi) — 沒(méi)有具體對(duì)象的概念類(lèi) – 較高層次的概括 – 抽象類(lèi)的作用是讓其他類(lèi)來(lái)繼承它的抽象化的特征。 ?final 最終類(lèi) — 該類(lèi)不能有子類(lèi) 。 ?final可以與 abstract一起使用嗎? 3 面向?qū)ο缶幊? 113 抽象方法 ?abstract 抽象方法 僅有方法頭而沒(méi)有方法體的方法,為該類(lèi)的子類(lèi)定義一個(gè)方法的接口標(biāo)準(zhǔn)。 一個(gè)抽象類(lèi)的子類(lèi)如果不是抽象類(lèi),則它必須為父類(lèi)中的所有抽象方法書(shū)寫(xiě)方法體。 – 子類(lèi)不能再重新定義與此方法同名的自己的方法,而僅能使用從父類(lèi)繼承來(lái)的方法。 ?固定了這個(gè)方法所對(duì)應(yīng)的具體操作,可以防止子類(lèi)對(duì)父類(lèi)關(guān)鍵方法的錯(cuò)誤的重定義,保證了程序的安全性和正確性。 long cardNumber。 String connectNumber。 double additoryFee。 long cardNumber。 String connectNumber。 Number_ PhoneCard類(lèi) double balance PhoneCard類(lèi) 3 面向?qū)ο缶幊? 117 變量的隱藏 class D200_Card extends Number_PhoneCard { double additoryFee。 //隱藏 boolean performDial() { if( balance ( + additoryFee )) { balance = ( + additoryFee)。 } else return false。 – 使用 。 ()。 ()。 void print(){ (x)。 void print(){ (= + )。 (x= + x)。 ? 定義與父類(lèi)完全相同的方法,實(shí)現(xiàn)對(duì)父類(lèi)方法的覆蓋: – 完全相同的方法名 – 完全相同的參數(shù)列表 – 完全相同類(lèi)型的返回值 – 注意:在滿(mǎn)足上述三個(gè)條件同時(shí),還必須保證:訪問(wèn)權(quán)限不能縮小,拋出的例外要相同 ? 三個(gè)條件有一個(gè)不滿(mǎn)足 , 就不是方法的覆蓋 , 而是子類(lèi)自己定義與父類(lèi)無(wú)關(guān)的方法 , 父類(lèi)的方法未被覆蓋 , 因而仍然存在 。 ? 這個(gè)方法代表的相同功能(撥打電話(huà)),但在不同種類(lèi)的電話(huà)卡中,其具體實(shí)現(xiàn)是不同的。 ? 但是所有的類(lèi)中,凡是實(shí)現(xiàn)撥打電話(huà)這種功能的方法,盡管內(nèi)容不同,卻共享相同的名字 ——performDial ? 由于同名的不同方法是屬于不同的類(lèi),所以只需在調(diào)用方法時(shí)指明是哪個(gè)類(lèi)的方法即可區(qū)分(類(lèi)名 .方法名或?qū)ο竺?.方法名)。 double getBalance() abstract Number_PhoneCard類(lèi): abstract boolean performDial()。 3 面向?qū)ο缶幊? 123 類(lèi)的初始化 靜態(tài)初始化器 ? 由關(guān)鍵字 static引導(dǎo)的一對(duì)大括號(hào)括起的語(yǔ)句
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1