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

正文內(nèi)容

javaee基礎(chǔ)教程第4章類與對(duì)象的基本概念ppt-資料下載頁(yè)

2024-10-18 14:25本頁(yè)面
  

【正文】 class subClass extends superClass{ int x。 subClass( ){ super( )。 //調(diào)用父類的構(gòu)造方法 x = 5。 (in subClass : x = +x)。 } void doSomething( ){ ( )。 //調(diào)用子類的構(gòu)造方法 (in ( ))。 ( = ++ = +x)。 } } Java EE基礎(chǔ)教程 79 2021年 11月 10日星期三 public class Inheritance{ public static void main( String[] args){ subClass subC=new subClass( )。 ( )。 } } Java EE基礎(chǔ)教程 80 2021年 11月 10日星期三 ? ?在 java里面向上轉(zhuǎn)型通俗理解就是子類對(duì)象轉(zhuǎn)型成父類對(duì)象,向上轉(zhuǎn)型是自動(dòng)進(jìn)行的。例如: ?假設(shè), A 類是 B 類的父類,當(dāng)我們用子類創(chuàng)建一個(gè)對(duì)象,并把這個(gè)子類對(duì)象的引用放到父類的對(duì)象中時(shí),比如: A a。 a=new B( )。 或 A a。 B b=new B( )。 a=b。 ?稱這個(gè)父類對(duì)象 a是子類對(duì)象 b的上轉(zhuǎn)型對(duì)象,上轉(zhuǎn)型對(duì)象的實(shí)體是子類負(fù)責(zé)創(chuàng)建的,但上轉(zhuǎn)型對(duì)象會(huì)失去原對(duì)象中新增的的一些屬性和方法。 Java EE基礎(chǔ)教程 81 2021年 11月 10日星期三 ?我們經(jīng)常說(shuō)“老虎是哺乳動(dòng)物”,“狗是哺乳動(dòng)物”等。因?yàn)椴溉轭愂抢匣㈩惡凸奉惖母割悾赃@樣說(shuō)當(dāng)然正確。但從語(yǔ)法角度看,當(dāng)說(shuō)老虎是哺乳動(dòng)物時(shí),老虎將失掉老虎獨(dú)有的屬性和功能。 Java EE基礎(chǔ)教程 82 2021年 11月 10日星期三 Java EE基礎(chǔ)教程 83 2021年 11月 10日星期三 ? 上轉(zhuǎn)型對(duì)象具有如下特點(diǎn): ? 上轉(zhuǎn)型對(duì)象不能操作子類新增的成員變量,失掉了這部分屬性;也不 能使用子類新增的方法,失掉了一些功能。 ? 上轉(zhuǎn)型對(duì)象可以操作子類繼承的成員變量,也可以使用子類繼承的或 重寫(xiě)的方法。 ? 如果子類重寫(xiě)了父類的某個(gè)方法后,當(dāng)對(duì)象的上轉(zhuǎn)對(duì)象調(diào)用這個(gè)方法時(shí)一定是調(diào)用了這個(gè)重寫(xiě)的方法,因?yàn)槌绦蛟谶\(yùn)行時(shí)知道,這個(gè)上轉(zhuǎn) 對(duì)象的實(shí)體是子類創(chuàng)建的,只不過(guò)改變了一些功能而已。 ? 不要將父類創(chuàng)建的對(duì)象和子類對(duì)象的上轉(zhuǎn)對(duì)象混淆。 ? 可以將對(duì)象的上轉(zhuǎn)型對(duì)象再?gòu)?qiáng)制轉(zhuǎn)換到子類對(duì)象,這時(shí),該子類對(duì)象又具備了子類所給的所有屬性和功能。 ? 不可以將父類創(chuàng)建的對(duì)象的引用賦值給子類聲明的對(duì)象,也就是不能 說(shuō)“哺乳動(dòng)物是老虎”。 Java EE基礎(chǔ)教程 84 2021年 11月 10日星期三 例 419 對(duì)象的上轉(zhuǎn)型對(duì)象舉例。示例中“類人猿”類對(duì)象originalPeople是 People1類對(duì)象 people的上轉(zhuǎn)型對(duì)象。 程序清單: ch04\ package ch04。 class 類人猿 { public 類人猿 (){ (類人猿 Created!)。 } void crySpeak(){ ( 我是類人猿。 )。 } } Java EE基礎(chǔ)教程 85 2021年 11月 10日星期三 class People1 extends 類人猿 { public People1(){ (People Created!)。 } void crySpeak(){ ( 我是 People。 )。 } } class BackwardObject{ public static void main(String[] args) { 類人猿 originalPeople=new 類人猿 ()。 People1 people=new People1()。 originalPeople=people。 ()。 ()。 } } Java EE基礎(chǔ)教程 86 2021年 11月 10日星期三 ? ?在 java語(yǔ)言中,多態(tài)性體現(xiàn)在兩個(gè)方面:由方法重載實(shí)現(xiàn)的靜態(tài)多態(tài)性(編譯時(shí)多態(tài))和方法重寫(xiě)實(shí)現(xiàn)的動(dòng)態(tài)多態(tài)性(運(yùn)行時(shí)多態(tài))。 ? 1.編譯時(shí)多態(tài) ?在編譯階段,具體調(diào)用哪個(gè)被重載的方法,編譯器會(huì)根據(jù)參數(shù)的不同來(lái)靜態(tài)確定調(diào)用相應(yīng)的方法。 ? 2.運(yùn)行時(shí)多態(tài) ?運(yùn)行時(shí)多態(tài)性就是指父類的某個(gè)方法被其子類重寫(xiě)時(shí),可以各自產(chǎn)生自己的功能行為。運(yùn)行時(shí)多態(tài)也稱動(dòng)態(tài)綁定( dynamic binding)、后期綁定( late binding)或運(yùn)行時(shí)綁定( runtime binding)。 Java EE基礎(chǔ)教程 87 2021年 11月 10日星期三 ?子類繼承了父類所有的屬性(私有的除外),對(duì)于重載或繼承的方法, Java運(yùn)行時(shí)系統(tǒng)根據(jù)調(diào)用該方法的實(shí)例的類型來(lái)決定選擇哪個(gè)方法調(diào)用。對(duì)子類的一個(gè)實(shí)例,如果子類重載了父類的方法,則運(yùn)行時(shí)系統(tǒng)調(diào)用子類的方法,如果子類繼承了父類的方法(未重載),則運(yùn)行時(shí)系統(tǒng)調(diào)用父類的方法。因此,一個(gè)對(duì)象可以通過(guò)引用子類的實(shí)例調(diào)用子類的方法。 ?我們經(jīng)常說(shuō)“哺乳動(dòng)物有很多種叫聲”,比如,“吼”、“嚎”、“汪汪”、“喵喵”等,這就是叫聲的多態(tài)。當(dāng)把子類創(chuàng)建的對(duì)象的引用放到一個(gè)父類的對(duì)象中時(shí),就得到了該對(duì)象的一個(gè)上轉(zhuǎn)型對(duì)象。當(dāng)一個(gè)類有很多子類時(shí),并且這些子類都重寫(xiě)了父類中的某個(gè)方法,那么這個(gè)上轉(zhuǎn)的對(duì)象在調(diào)用這個(gè)方法時(shí)就可能具有多種形態(tài),因?yàn)椴煌淖宇愒谥貙?xiě)父類的方法時(shí)可能產(chǎn)生不同的行為。 Java EE基礎(chǔ)教程 88 2021年 11月 10日星期三 例 420 這是運(yùn)行時(shí)多態(tài)的例子。狗類的上轉(zhuǎn)型對(duì)象調(diào)用叫聲方法時(shí)產(chǎn)生的行為是“旺旺”,而貓類的上轉(zhuǎn)型對(duì)象調(diào)用叫聲方法時(shí),產(chǎn)生的行 為是“喵喵”。 程序清單: ch04\ class 動(dòng)物 { void cry(){ } } class 狗 extends 動(dòng)物 { void cry(){ (狗 cry(): 汪汪 .....)。 } } Java EE基礎(chǔ)教程 89 2021年 11月 10日星期三 class 貓 extends 動(dòng)物 { void cry(){ (貓 cry(): 喵喵 .....)。 } } class DynamicState{ public static void main(String[] args){ 動(dòng)物 dongwu。 if(()=) { dongwu=new 狗 ()。 //上轉(zhuǎn)的對(duì)象 ()。 } else { dongwu=new 貓 ()。 //上轉(zhuǎn)的對(duì)象 ()。 } } } Java EE基礎(chǔ)教程 90 2021年 11月 10日星期三 例 421該例中,聲明了 A類型的變量 a,然后用 new建立 A類的子類 B的一個(gè)實(shí)例 b,并把對(duì)該實(shí)例的一個(gè)引用存儲(chǔ)到 a中, Java運(yùn)行時(shí)系統(tǒng)分析該引用是類型 B的一個(gè)實(shí)例,因此調(diào)用子類 B的 callme方法。 程序清單: ch04\ class A{ void callme( ){ (Inside A39。s callme( ) method)。 } } class B extends A{ void callme( ){ (Inside B39。s callme( ) method)。 } } public class Dispatch{ public static void main( String args[ ] ){ A a = new B( )。 ( )。 } } Java EE基礎(chǔ)教程 91 2021年 11月 10日星期三 ?用這種方式可以實(shí)現(xiàn)運(yùn)行時(shí)的多態(tài),它體現(xiàn)了面向?qū)ο蟪绦蛟O(shè)計(jì)中的代碼復(fù)用和魯棒性。已經(jīng)編譯好的類庫(kù)可以調(diào)用新定義的子類的方法而不必重新編譯,而且還提供了一個(gè)簡(jiǎn)明的抽象接口。如上例中,如果增加幾個(gè) A的子類的定義,則用( )可以分別調(diào)用多個(gè)子類的不同的callme( )方法,只需分別用 new生成不同子類的實(shí)例即可。 Java EE基礎(chǔ)教程 92 2021年 11月 10日星期三 類的訪問(wèn)權(quán)限與包的概念 返回 ? ? 類的訪問(wèn)控制有 public、 abstract、 final及 friendly(無(wú)修飾符或缺?。┧姆N。不能用 protected 和 private 修飾類。 ? 1. public類 ? 表示所有其它的類都可以使用此類;這個(gè)類作為整體是可見(jiàn)和可使用的,程序的其他部分可以創(chuàng)建這個(gè)類的對(duì)象,訪問(wèn)這個(gè)類可用的成員變量和方法。 ? 當(dāng)編寫(xiě)一個(gè) Java源代碼文件時(shí),此文件通常被稱為編譯單元。每個(gè)編譯單元都必須要有一個(gè)后綴為 .java,而在編譯單元內(nèi)測(cè)可以有一個(gè)public類,該類的名稱必須與文件名稱相同 (包括大小寫(xiě),但不包括文件的后綴名 .java)。每個(gè)編譯單元只能有一個(gè) public類,否則編譯器就不會(huì)接受。如果在該編譯單元之中還有額外的類的話,那么在包之外是無(wú)法看見(jiàn)這些類的,這是因?yàn)樗麄儾皇?public類,而且他們主要用來(lái)為主要 public類提供支持。 ? 雖然不是很常用,但編譯單元內(nèi)完全不帶 public類也是可能的。這種情況下,可以隨意對(duì)文件命名。當(dāng)然隨意命名會(huì)使得人們?cè)陂喿x和維 護(hù)代碼時(shí)產(chǎn)生混淆。 Java EE基礎(chǔ)教程 93 2021年 11月 10日星期三 ?2. abstract類 ?抽象類不可以直接實(shí)例化,不能直接產(chǎn)生屬于這個(gè)類的對(duì)象;但是我們可以通過(guò)子類繼承來(lái)使用經(jīng)過(guò)重寫(xiě)的子類方法。子類如果不全部實(shí)現(xiàn)父類中的抽象方法,則子類也只能聲明為抽象類。抽象類中也可以聲明 static屬性和方法。 ?抽象方法必須使用 abstract來(lái)修飾,而包含抽象方法的類必須聲明為抽象類。不管是父類還是子類,只要有抽象方法就必須聲明為抽象類。 Java EE基礎(chǔ)教程 94 2021年 11月 10日星期三 例 422寫(xiě)兩個(gè)類 Dog和 Bird,繼承抽象類 Animal,子類對(duì)父類的抽象方法進(jìn)行重寫(xiě)。 程序清單: ch04\ abstract class Animal{ public abstract void eat()。 //只有方法名,而沒(méi)有方法體 } class Dog extends Animal{ private String name。 public void setName(String name){ =name。 } public String getName(){ return name。 } public void eat(){ (小狗啃骨頭啦 )。 } } Java EE基礎(chǔ)教程 95 2021年 11月 10日星期三 class Bird extends Animal{ public void fly( ){ (小鳥(niǎo)飛呀飛呀 )。 } public void eat( ){ (小鳥(niǎo)吃蟲(chóng)子啦 )。 } } public class BackAnimal{ public static void main( String args[ ] ){ Animal an = new Dog( )。 ( )。 an=new Bird()。 ()。 } } Java EE基礎(chǔ)教程 96 2021年 11月 10日星期三 ? 3. final類 ?在類名前加關(guān)鍵字 final,這個(gè)類就被定義為 final類,當(dāng)一個(gè)類被定義為 final時(shí),它的所有方法都
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1