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

正文內(nèi)容

達(dá)內(nèi)java培訓(xùn)學(xué)習(xí)筆記(編輯修改稿)

2024-08-24 06:10 本頁面
 

【文章內(nèi)容簡介】 有一個直接的父類。這樣就是繼承關(guān)系呈樹狀,體現(xiàn)了java的簡單性。子類只能繼承在父類中可以訪問的屬性和方法(實(shí)際上父類中私有的屬性和方法也會被繼承但子類中無法訪問罷了)。實(shí)際上一個子類對象中包含一個父類對象訪問控制修飾符:(可以修飾屬性和方法)private修飾符,表示只有本類內(nèi)部可以訪問,不能繼承。default修飾符,方法不加修飾符,會默認(rèn)為default,表示在同一個包中可以訪問,父子類在同一包中,子類可以繼承父類的相應(yīng)內(nèi)容。(可以修飾類)protected(保護(hù))修飾符,表示同一包中可以訪問,不同包的子類也可以訪問繼承。public修飾符,表示公開,在任何地方都可以訪問,能繼承。(可以修飾類)修飾符的權(quán)限是由上而下逐漸變寬的。繼承的意義,就在于子類可以在父類的基礎(chǔ)之上對父類的功能進(jìn)行發(fā)展,繼承可以使系統(tǒng)的耦合性降低,也就是使對象間的聯(lián)系便的松散,使多類對象間的聯(lián)系用其父類對象代替。注意:構(gòu)造方法不能被繼承。父類的屬性及方法的確定:要從子類的角度來看子類間的共性,當(dāng)所有子類都有這個屬性時,就應(yīng)當(dāng)考慮是否該放在父類中,方法也是如此,方法可以被看作是對象的行為,而類的方法這時這一類對象所共有的行為,所以也應(yīng)當(dāng)在方法的確定時注意是不是所有的子類型中都需要有這種方法,并且會根據(jù)不同的類型的行為的方式也不同才可以覆蓋著個方法。java中方法的覆蓋子類中有和父類中可訪問(可繼承到子類)的同名同返回類型同參數(shù)表的方法,就會覆蓋從父類繼承來的方法。在父子類中,出現(xiàn)方法名相同,參數(shù)表不同的情況,叫方法的重載方法覆蓋父子類返回值類型也要相同注意:,需要方法的返回值,參數(shù)表,方法名必須嚴(yán)格相同,子類的中覆蓋的方法的返回值可以是父類中被覆蓋的方法的返回值類型的子類型。注意:子類的方法覆蓋父類的方法時,方法的修飾符要么相同,要么子類中的方法的修飾符表示的訪問權(quán)限要寬于父類。父類中的私有方法,不能被繼承到子類,就是說子類中即使將其覆蓋了也不會有多態(tài)。注意:父子類中有同名的屬性不叫子類覆蓋了父類的屬性,這種情況較作屬性的遮蓋(shadow)。super關(guān)鍵字(1)區(qū)分父子類間的屬性遮蓋和方法覆蓋(2)super(),表示在子類的構(gòu)造方法中調(diào)用父類的構(gòu)造方法(可以通過這種方法在子類的構(gòu)造方法中初始化父類中的屬性),super()也只能出現(xiàn)在構(gòu)造方法的第一句上。super(),在子類的構(gòu)造方中指明構(gòu)造父類時調(diào)用哪一個父類的構(gòu)造方法構(gòu)造父類。super,這里所表示的是一個父類的對象,可以通過super來使用父類中可以訪問的方法(可以在父類中定義setXxx(),getXxx()方法來訪問父類中的私有屬性),super可以屏蔽父子類中同名屬性的沖突。注意:在寫類的時候,一定要寫默認(rèn)無參的構(gòu)造方法,如果一個構(gòu)造方法的第一句既不是this(),也不是super()時,那么就會在這里隱含的調(diào)用他的父類的無參的構(gòu)造方法,即隱含的有super()。創(chuàng)建對象的過程1)遞歸的構(gòu)造父類的對象,默認(rèn)調(diào)用父類無參的構(gòu)造方法super()2)分配本類空間3)初始化本類實(shí)例變量(屬性)4)調(diào)用本類的構(gòu)造方法java中的多態(tài) 運(yùn)行時多態(tài)Animal a = new Dog()。 //引用類型可以是對象類型的父類對象類型 客觀類型引用類型 主觀類型以子類覆蓋了父類的方法為前提1)對象類型不變2)只能對一個對象調(diào)用引用類型中定義的方法3)運(yùn)行時會根據(jù)對象類型找覆蓋之后的方法Animal a = new Dog()。Dog d = new Dog()。a = d。 //把子類引用賦值給父類引用,是合法的d = (Dog)a。 //把父類引用賦值給自類引用,需要強(qiáng)轉(zhuǎn)引用 instanceof 類名 //判斷前面的引用和后面的類是否兼容可以翻譯為“是不是”a instanceof Dag。 //a指向的對象是不是Dog類一般用在強(qiáng)制類型轉(zhuǎn)換之前,避免轉(zhuǎn)換異常多態(tài)可以使代碼變得更通用,以適應(yīng)需求的變化。也就是定義在父類中的方法,可以在子類中有不同的實(shí)現(xiàn)將其覆蓋,在為父類型的對象變量賦值相應(yīng)需要功能的子類的對象實(shí)例??梢云帘尾煌宇惖牟町愖鳂I(yè):1. 設(shè)計一個形狀類,方法:求周長和求面積形狀類的子類:Rect(矩形),Circle(圓形)Rect類的子類:Square(正方形)不同的子類會有不同的計算周長和面積的方法創(chuàng)建三個不同的形狀對象,放在Shape類型的數(shù)組里,分別打印出每個對象的周長和面積2. 某公司的雇員分為以下若干類:Employee:這是所有員工總的父類,屬性:員工的姓名,員工的生日月份。方法:getSalary(int month) 根據(jù)參數(shù)月份來確定工資,如果該月員工過生日,則公司會額外獎勵100元。SalariedEmployee:Employee的子類,拿固定工資的員工。屬性:月薪HourlyEmployee:Employee的子類,按小時拿工資的員工。屬性:每小時的工資、每月工作的小時數(shù)SalesEmployee:Employee的子類,銷售人員,工資由月銷售額和提成率決定。屬性:月銷售額、提成率BasePlusSalesEmployee:SalesEmployee的子類,有固定底薪的銷售人員,工資由底薪加上銷售提成部分。屬性:底薪。寫一個程序,把若干各種類型的員工放在一個Employee數(shù)組里,寫一個函數(shù),打印出某月每個員工的工資數(shù)額。注意:要求把每個類都做成完全封裝,不允許非私有化屬性。Java第五天 2007年4月26日一、復(fù)習(xí)封裝該隱藏隱藏,該公開的公開屬性隱藏,同時提供get/set方法有些方法應(yīng)該隱藏方法聲明公開,實(shí)現(xiàn)隱藏。實(shí)現(xiàn)的改變對架構(gòu)的影響最小繼承一般-特殊單繼承:一個類最多只能有一個直接父類。類之間可以形成樹狀關(guān)系根據(jù)訪問權(quán)限,子類如果可以訪問父類的屬性和方法,就能繼承private 私有 不能繼承default 本類+同包 同包子類可以繼承,不同包子類不能繼承protected 本類+同包+不同包子類 可以繼承public 公開 可以繼承方法的覆蓋(Override):方法名相同,參數(shù)表相同,返回值相同,訪問修飾符比父類相同或更寬,拋出的異常不能比父類更寬繼承關(guān)系下對象的構(gòu)造過程1)遞歸的構(gòu)造父類對象2)分配本類空間3)初始化本類屬性4)調(diào)用本類的構(gòu)造方法super:super. 父類對象,訪問父類被覆蓋的方法或者父類被遮蓋的屬性super() 用在構(gòu)造方法時,用來指明調(diào)用父類的哪個構(gòu)造方法,放在構(gòu)造方法的第一行,默認(rèn)調(diào)用父類無參構(gòu)造方法多態(tài)編譯時多態(tài):方法的重載運(yùn)行時多態(tài):子類對象當(dāng)作父類對象來用?。?!屏蔽同一父類下,不同子類差異Animal a = new Dog()。允許引用類型和對象類型不同,但要求引用類型是對象類型的父類。對象類型代表了對象自身客觀的實(shí)際類型,引用類型代表了主觀上把對象當(dāng)作什么類型來看待。引用類型:編譯時類型,主觀類型對象類型:運(yùn)行時類型,客觀類型1)對象運(yùn)行時類型不變2)只能對對象調(diào)用其編譯時類型定義的方法3)運(yùn)行時根據(jù)對象類型去匹配對象類型中覆蓋之后的方法Super s1。Sub s2。s1=s2。s2=s1。 //error , s2=(Sub)s2強(qiáng)制類型轉(zhuǎn)換:當(dāng)我們把父類的引用賦值給子類引用的時候,需要強(qiáng)制類型轉(zhuǎn)換。強(qiáng)制類型轉(zhuǎn)換失?。侯愋娃D(zhuǎn)換異常.為了避免類型轉(zhuǎn)換異常,使用instanceof判斷引用 instanceof 類名 引用指向的對象的類型與后面的類名是否兼容多態(tài)的作用:通用編程我們可以把不同子類的對象都當(dāng)作父類對象看待,評比不同子類的差異。二、CARP(組合/聚合復(fù)用原則)實(shí)現(xiàn)代碼重用最好的方法不是繼承兩種復(fù)用白盒復(fù)用,也就是繼承復(fù)用,破壞封裝,父類中的可以被子類訪問到的就可以被繼承,這樣會有些不需要的內(nèi)容被繼承下來,所以這種方式不太好。黑盒復(fù)用,也叫組合復(fù)用,也就是把要復(fù)用代碼的類的對象作為本類中的一個屬性,然后再通過方法的委托來實(shí)現(xiàn)由選擇的復(fù)用。方法的委托就是在本類的方法內(nèi)部通過該類的對象調(diào)用要使用類的方法,不破壞封裝。注意:盡量用組合復(fù)用替代繼承復(fù)用。三、多態(tài)多態(tài)用于參數(shù),可以在方法的參數(shù)中傳入其父類類型,在運(yùn)行時會根據(jù)實(shí)際的運(yùn)行時類型來在方法中進(jìn)行相應(yīng)的操作。多態(tài)一般用在方法的參數(shù)上void feed(Animal a){a. eat()。}調(diào)用的時候feed(new Dog())。 //運(yùn)行時,調(diào)用的是Dog類中覆蓋的eat()方法多態(tài)用于返回值,可以在方法的返回值類型上是用其實(shí)際返回值的父類型,在使用其返回值時也不關(guān)心其實(shí)際類型。 public static Animal getAnimal(int type){ if (type==0) return new Dog()。 else return new Cat()。 }屏蔽子類差異,可擴(kuò)展(只修改方法的實(shí)現(xiàn),不必修改方法的聲明)Animal a = new Dog()。a. age。 //訪問屬性是沒有多態(tài)的,訪問的是引用的age屬性a. eat()。 //調(diào)用Dog類中覆蓋Animal類中的eat()方法,多態(tài)Animal a = new Dog()。method(a)。運(yùn)行結(jié)果調(diào)用參數(shù)是Animal類對象的那個method()方法方法的重載只看引用類型,跟引用指向的對象類型沒有關(guān)系四、對象的比較String s1 = new String(abc)。String s2 = new String(abc)。s1 == s2。 false 判斷兩個引用是否指向同一對象,即地址是否相同(s2)。 true 判斷兩個引用指向的對象的內(nèi)容是否相同練習(xí):(繼承,多態(tài))銀行的客戶分為兩類,儲蓄賬戶(SavingAccount)和信用賬戶(CreditAccount),區(qū)別在于儲蓄賬戶不允許透支而信用賬戶可以透支,并允許用戶設(shè)置自己的透支額度.注意:CreditAccount需要多一個屬性 ceiling 透支額度為這兩種用戶編寫相關(guān)的類同時要求編寫B(tài)ank類,屬性:1. 當(dāng)前所有的賬戶對象的集合,存放在數(shù)組中2. 當(dāng)前賬戶數(shù)量方法:1. 用戶開戶,需要的參數(shù):id,密碼,密碼確認(rèn),姓名,身份證號碼,郵箱,賬戶類型,返回新創(chuàng)建的Account對象提示:(s2) 可以比較s1,為0的時候表示儲蓄賬戶,為1的時候表示信用賬戶2. 用戶登錄,參數(shù):id,密碼 返回Account對象3. 用戶存款,參數(shù):id,存款數(shù)額,返回修改過的Account對象4. 用戶取款,參數(shù):id,取款數(shù)額,返回修改過的Account對象5. 設(shè)置透支額度 參數(shù):id,新的額度 ,用戶會通過調(diào)用Bank對象以上的方法來操作自己的賬戶,請分析各個方法需要的參數(shù)另外,請為Bank類添加幾個統(tǒng)計方法1. 統(tǒng)計銀行所有賬戶余額總數(shù)2. 統(tǒng)計所有信用賬戶透支額度總數(shù)寫個主方法測試你寫的類Java第六天 2007年4月27日修飾符一、static修飾屬性,方法,代碼塊靜態(tài)屬性:全類公有,稱為類變量那么這個屬性就可以用 來訪問(共有的類變量與對象無關(guān),只和類有關(guān))類加載:虛擬機(jī)通過I/O流把一個類的信息從字節(jié)碼文件中讀入虛擬機(jī)并保存起來一個類只會加載一次類變量,會在加載時自動初始化,初始化規(guī)則和實(shí)例變量相同。注意:類中的實(shí)例變量是在創(chuàng)建對象時被初始化的,被static修飾的屬性,也就是類變量,是在類加載時被創(chuàng)建并進(jìn)行初始化,類加載的過程是進(jìn)行一次。也就是類變量只會被創(chuàng)建一次。靜態(tài)方法:使這個方法成為整個類所公有的方法,可以用 直接訪問注意:static修飾的方法,不能直接訪問(可以通過組合方式訪問)本類中的非靜態(tài)(static)成員(包括方法和屬性)本類的非靜態(tài)(static)方法可以訪問本類的靜態(tài)成員(包括方法和屬性),可以調(diào)用靜態(tài)方法。靜態(tài)方法要慎重使用。在靜態(tài)方法中不能出現(xiàn)this關(guān)鍵字,因?yàn)檫@是針對對象而言的。java中的main方法必須寫成static的,因?yàn)?,在類加載時無法創(chuàng)建對象,靜態(tài)方法可以不通過對象調(diào)用。所以在類加載時就可以通過main方法入口來運(yùn)行程序。注意:父類中是靜態(tài)方法,子類中不能覆蓋為非靜態(tài)方法。在符合覆蓋規(guī)則的前提下,在父子類中,父類中的靜態(tài)方法可以被子類中的靜態(tài)方法覆蓋,但是沒有多態(tài)。使用引用調(diào)靜態(tài)方法,相當(dāng)于使用引用的類型去調(diào)用靜態(tài)方法。(在使用對象調(diào)用靜態(tài)方法是其實(shí)是調(diào)用編譯時類型的靜態(tài)方法)初始代碼塊在定義屬性的位置上,在任何方法之外,定義一個代碼塊動態(tài)初始代碼塊:在初始化屬性之前調(diào)用初始化代碼塊 {……}靜態(tài)初始代碼塊:在類加載時運(yùn)行 static{……} 只被運(yùn)行一次,往往用作一個類的準(zhǔn)備工作二、一個類在什么時候被加載?時機(jī) (延遲加載,能不加載就不加載)(1)new 一個對象的時候,加載(2)沒有創(chuàng)建對象,訪問類中靜態(tài)成員(方法和屬性),加載(3)聲明一個類的引用,不加載(4)創(chuàng)建子類,先加載父類,再加載子類(5)父類中的公開靜態(tài)方法,子類繼承,使用子類的類名調(diào)用此方法,加載父類class
點(diǎn)擊復(fù)制文檔內(nèi)容
范文總結(jié)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1