OOP技術(shù):面向?qū)ο蠹夹g(shù)_第1頁(yè)
OOP技術(shù):面向?qū)ο蠹夹g(shù)_第2頁(yè)
OOP技術(shù):面向?qū)ο蠹夹g(shù)_第3頁(yè)
OOP技術(shù):面向?qū)ο蠹夹g(shù)_第4頁(yè)
OOP技術(shù):面向?qū)ο蠹夹g(shù)_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、.OOP技術(shù):面向?qū)ο蠹夹g(shù)教案名稱:教案大?。航贪割愋停篧ORD文檔星級(jí)評(píng)定:教案簡(jiǎn)介:類是Java語(yǔ)言面向?qū)ο缶幊痰幕驹?,它定義了一個(gè)對(duì)象的結(jié)構(gòu)和功能。 Java類中包含成員變量和成員方法。成員變量有兩種,用static 關(guān)鍵字修飾的變量為類變量,無(wú)static 修飾的變量為實(shí)例變量。相應(yīng)地,成員方法也有兩種,用static 修飾的為類方法,無(wú)static修飾的為實(shí)例方法。實(shí)例方法不僅可以對(duì)當(dāng)前對(duì)象的實(shí)例變量進(jìn)行操作,也可以對(duì)類變量進(jìn)行操作;但類方法只能訪問(wèn)類變量。實(shí)例變量和實(shí)例方法必須由實(shí)例對(duì)象來(lái)調(diào)用,而類變量和類方法不僅可由實(shí)例對(duì)象來(lái)調(diào)用,還可由類名直接調(diào)用。Java通過(guò)在類定義的大

2、括號(hào)里聲明變量來(lái)把數(shù)據(jù)封裝在一個(gè)類里,這里的變量稱為成員變量。為了解決類名可能相同的問(wèn)題,java 中提供包來(lái)管理類名空間。封裝性、繼承性和多態(tài)性是java語(yǔ)言中面向?qū)ο蟮娜齻€(gè)特性。下載一第三章 面向?qū)ο蠹夹g(shù)【課前思考】1 什么是對(duì)象?什么是類? 2 面向?qū)ο缶幊痰奶匦杂心娜齻€(gè)?它們各自又有哪些特性?3 你知道java語(yǔ)言在面向?qū)ο缶幊谭矫嬗泻为?dú)特的特點(diǎn)嗎?【學(xué)習(xí)目標(biāo)】本講主要講述了java語(yǔ)言的面向?qū)ο蠹夹g(shù),包括面向?qū)ο蟮幕靖拍?、面向?qū)ο蟮某绦蛟O(shè)計(jì)方法及java中的類、包、對(duì)象、的特性。通過(guò)本講的學(xué)習(xí),同學(xué)們可以使用面向?qū)ο蠹夹g(shù)編寫(xiě)java程序?!緦W(xué)習(xí)指南】應(yīng)深刻理解各知識(shí)點(diǎn)的概念,使用上

3、一講的編程基礎(chǔ)知識(shí)及面向?qū)ο蠹夹g(shù),編寫(xiě)簡(jiǎn)單的java類,由淺至深,養(yǎng)成風(fēng)格良好的編程習(xí)慣?!倦y 重 點(diǎn)】 重點(diǎn):1 仔細(xì)體會(huì)面向?qū)ο缶幊痰乃枷?,熟練理解類和?duì)象的概念,理解面向?qū)ο蟮奶匦?,?huì)編寫(xiě)簡(jiǎn)單的類,逐漸掌握面向?qū)ο缶幊痰姆椒ā? 注意java語(yǔ)言中,不允許多重繼承,以及類變量和類方法的使用。難點(diǎn):1 理解方法重載和方法重寫(xiě),不要混淆了兩者的使用。2 類變量和類方法的使用?!局?識(shí) 點(diǎn)】31 面向?qū)ο蠹夹g(shù)基礎(chǔ) 311 面向?qū)ο蟮幕靖拍?312 面向?qū)ο蟮幕咎卣?313 面向?qū)ο蟮某绦蛟O(shè)計(jì)方法32 Java語(yǔ)言的面向?qū)ο筇匦?321 類 322 對(duì)象323面向?qū)ο筇匦?1 面向?qū)ο蠹夹g(shù)基

4、礎(chǔ)311 面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο蟮幕舅枷朊嫦驅(qū)ο笫且环N新興的程序設(shè)計(jì)方法,或者是一種新的程序設(shè)計(jì)規(guī)范(paradigm),其基本思想是使用對(duì)象、類、繼承、封裝、消息等基本概念來(lái)進(jìn)行程序設(shè)計(jì)。從現(xiàn)實(shí)世界中客觀存在的事物(即對(duì)象)出發(fā)來(lái)構(gòu)造軟件系統(tǒng),并且在系統(tǒng)構(gòu)造中盡可能運(yùn)用人類的自然思維方式。開(kāi)發(fā)一個(gè)軟件是為了解決某些問(wèn)題,這些問(wèn)題所涉及的業(yè)務(wù)范圍稱作該軟件的問(wèn)題域。其應(yīng)用領(lǐng)域不僅僅是軟件,還有計(jì)算機(jī)體系結(jié)構(gòu)和人工智能等。1 對(duì)象的基本概念對(duì)象是系統(tǒng)中用來(lái)描述客觀事物的一個(gè)實(shí)體,它是構(gòu)成系統(tǒng)的一個(gè)基本單位。一個(gè)對(duì)象由一組屬性和對(duì)這組屬性進(jìn)行操作的一組服務(wù)組成。從更抽象的角度來(lái)說(shuō),對(duì)象是問(wèn)題

5、域或?qū)崿F(xiàn)域中某些事物的一個(gè)抽象,它反映該事物在系統(tǒng)中需要保存的信息和發(fā)揮的作用;它是一組屬性和有權(quán)對(duì)這些屬性進(jìn)行操作的一組服務(wù)的封裝體。客觀世界是由對(duì)象和對(duì)象之間的聯(lián)系組成的。主動(dòng)對(duì)象是一組屬性和一組服務(wù)的封裝體,其中至少有一個(gè)服務(wù)不需要接收消息就能主動(dòng)執(zhí)行(稱作主動(dòng)服務(wù))。2 類的基本概念把眾多的事物歸納、劃分成一些類是人類在認(rèn)識(shí)客觀世界時(shí)經(jīng)常采用的思維方法。分類的原則是抽象。類是具有相同屬性和服務(wù)的一組對(duì)象的集合,它為屬于該類的所有對(duì)象提供了統(tǒng)一的抽象描述,其內(nèi)部包括屬性和服務(wù)兩個(gè)主要部分。在面向?qū)ο蟮木幊陶Z(yǔ)言中,類是一個(gè)獨(dú)立的程序單位,它應(yīng)該有一個(gè)類名并包括屬性說(shuō)明和服務(wù)說(shuō)明兩個(gè)主要部分

6、。類與對(duì)象的關(guān)系就如模具和鑄件的關(guān)系,類的實(shí)例化結(jié)果就是對(duì)象,而對(duì)一類對(duì)象的抽象就是類。3 消息消息就是向?qū)ο蟀l(fā)出的服務(wù)請(qǐng)求,它應(yīng)該包含下述信息:提供服務(wù)的對(duì)象標(biāo)識(shí)、服務(wù)標(biāo)識(shí)、輸入信息和回答信息。服務(wù)通常被稱為方法或函數(shù)。312 面向?qū)ο蟮幕咎卣?封裝性封裝性就是把對(duì)象的屬性和服務(wù)結(jié)合成一個(gè)獨(dú)立的相同單位,并盡可能隱蔽對(duì)象的內(nèi)部細(xì)節(jié),包含兩個(gè)含義: 把對(duì)象的全部屬性和全部服務(wù)結(jié)合在一起,形成一個(gè)不可分割的獨(dú)立單位(即對(duì)象)。 信息隱蔽,即盡可能隱蔽對(duì)象的內(nèi)部細(xì)節(jié),對(duì)外形成一個(gè)邊界或者說(shuō)形成一道屏障,只保留有限的對(duì)外接口使之與外部發(fā)生聯(lián)系。封裝的原則在軟件上的反映是:要求使對(duì)象以外的部分不能隨

7、意存取對(duì)象的內(nèi)部數(shù)據(jù)(屬性),從而有效的避免了外部錯(cuò)誤對(duì)它的"交叉感染",使軟件錯(cuò)誤能夠局部化,大大減少查錯(cuò)和排錯(cuò)的難度。2繼承性特殊類的對(duì)象擁有其一般類的全部屬性與服務(wù),稱作特殊類對(duì)一般類的繼承。例如,輪船、客輪;人、大人。一個(gè)類可以是多個(gè)一般類的特殊類,它從多個(gè)一般類中繼承了屬性與服務(wù),這稱為多繼承。例如,客輪是輪船和客運(yùn)工具的特殊類。在java語(yǔ)言中,通常我們稱一般類為父類(superclass,超類),特殊類為子類(subclass)。3多態(tài)性對(duì)象的多態(tài)性是指在一般類中定義的屬性或服務(wù)被特殊類繼承之后,可以具有不同的數(shù)據(jù)類型或表現(xiàn)出不同的行為。這使得同一個(gè)屬性或服務(wù)

8、在一般類及其各個(gè)特殊類中具有不同的語(yǔ)義。例如:"幾何圖形"的"繪圖"方法,"橢圓"和"多邊形"都是"幾何圖"的子類,其"繪圖"方法功能不同。313 面向?qū)ο蟪绦蛟O(shè)計(jì)方法OOAObject Oriented Analysis 面向?qū)ο蟮姆治鯫ODObject Oriented Design 面向?qū)ο蟮脑O(shè)計(jì)OOIObject Oriented Implementation 面向?qū)ο蟮膶?shí)現(xiàn)32 Java語(yǔ)言的面向?qū)ο筇匦?21 類類是java中的一種重要的復(fù)合數(shù)據(jù)類型,是組成jav

9、a程序的基本要素。它封裝了一類對(duì)象的狀態(tài)和方法,是這一類對(duì)象的原形。一個(gè)類的實(shí)現(xiàn)包括兩個(gè)部分:類聲明和類體。1類聲明:publicabstract|final class className extends superclassName implements interfaceNameList其中,修飾符public,abstract,final 說(shuō)明了類的屬性,className為類名,superclassName為類的父類的名字,interfaceNameList為類所實(shí)現(xiàn)的接口列表。2類體類體定義如下:class classNamepublic | protected | private

10、 static final transient volatile typevariableName;/成員變量public | protected | private staticfinal | abstract native synchronizedreturnType methodName(paramList) throws exceptionListstatements /成員方法3成員變量成員變量的聲明方式如下:public | protected | private static final transient volatile typevariableName; /成員變量其中,s

11、tatic: 靜態(tài)變量(類變量);相對(duì)于實(shí)例變量final: 常量transient: 暫時(shí)性變量,用于對(duì)象存檔volatile: 貢獻(xiàn)變量,用于并發(fā)線程的共享4成員方法方法的實(shí)現(xiàn)包括兩部分內(nèi)容:方法聲明和方法體。public | protected | private staticfinal| abstract native synchronizedreturnType methodName(paramList)throws exceptionList /方法聲明statements /方法體方法聲明中的限定詞的含義:static: 類方法,可通過(guò)類名直接調(diào)用abstract: 抽象方法,沒(méi)

12、有方法體final: 方法不能被重寫(xiě)native: 集成其它語(yǔ)言的代碼synchronized: 控制多個(gè)并發(fā)線程的訪問(wèn) 方法聲明方法聲明包括方法名、返回類型和外部參數(shù)。其中參數(shù)的類型可以是簡(jiǎn)單數(shù)據(jù)類型,也可以是復(fù)合數(shù)據(jù)類型(又稱引用數(shù)據(jù)類型)。對(duì)于簡(jiǎn)單數(shù)據(jù)類型來(lái)說(shuō),java實(shí)現(xiàn)的是值傳遞,方法接收參數(shù)的值,但不能改變這些參數(shù)的值。如果要改變參數(shù)的值,則用引用數(shù)據(jù)類型,因?yàn)橐脭?shù)據(jù)類型傳遞給方法的是數(shù)據(jù)在內(nèi)存中的地址,方法中對(duì)數(shù)據(jù)的操作可以改變數(shù)據(jù)的值。例3-1說(shuō)明了簡(jiǎn)單數(shù)據(jù)類型與引用數(shù)據(jù)的區(qū)別?!纠?-1】import java.io.*;public class PassTestfloat

13、 ptValue;public static void main(String args) int val;PassTest pt=new PassTest();val=11;System.out.println("Original Int Value is:"+val); pt.changeInt(val); /值參數(shù)System.out.println("Int Value after Change is:" +val); /*值參數(shù) 值的修改,沒(méi)有影響值參數(shù)的值*/pt.ptValue=101f;System.out.println("O

14、riginal ptValue is:"+pt.ptValue);pt.changeObjValue(pt); /引用類型的參數(shù)System.out.println("ptValue after Change is:"+pt.ptValue);/* 引用參數(shù)值的修改,改變了引用參數(shù)的值*/ public void changeInt(int value)value=55; /在方法內(nèi)部對(duì)值參數(shù)進(jìn)行了修改public void changeObjValue(PassTest ref)ref.ptValue=99f; /在方法內(nèi)部對(duì)引用參數(shù)進(jìn)行了修改查看運(yùn)行結(jié)果 方法

15、體方法體是對(duì)方法的實(shí)現(xiàn),它包括局部變量的聲明以及所有合法的Java指令。方法體中聲明的局部變量的作用域在該方法內(nèi)部。若局部變量與類的成員變量同名,則類的成員變量被隱藏。例3-2 說(shuō)明了局部變量z和類成員變量z的作用域是不同的?!纠?-2】import java.io.*;class Variableint x=0,y=0,z=0; /類的成員變量void init(int x,int y) this.x=x; this.y=y; int z=5; /局部變量System.out.println("* in init*");System.out.println("x

16、="+x+" y="+y+" z="+z); public class VariableTestpublic static void main(String args)Variable v=new Variable();System.out.println("*before init*");System.out.println("x="+v.x+" y="+ v.y+" z="+v.z);v.init(20,30);System.out.println("

17、*after init*");System.out.println("x="+v.x+ " y="+ v.y+" z="+v.z);上例中我們用到了this,這是因?yàn)閕nit()方法的參數(shù)名與類的成員變量x,y的名字相同,而參數(shù)名會(huì)隱藏成員變量,所以在方法中,為了區(qū)別參數(shù)和類的成員變量,我們必須使用this。this-用在一個(gè)方法中引用當(dāng)前對(duì)象,它的值是調(diào)用該方法的對(duì)象。返回值須與返回類型一致,或者完全相同,或是其子類。當(dāng)返回類型是接口時(shí),返回值必須實(shí)現(xiàn)該接口。5方法重載方法重載是指多個(gè)方法享有相同的名字,但是這些方法的參數(shù)

18、必須不同,或者是參數(shù)的個(gè)數(shù)不同,或者是參數(shù)類型不同。返回類型不能用來(lái)區(qū)分重載的方法。參數(shù)類型的區(qū)分度一定要足夠,例如不能是同一簡(jiǎn)單類型的參數(shù),如int與long。【例3-3】import java.io.*;class MethodOverloadingvoid receive(int i) System.out.println("Receive one int data");System.out.println("i="+i);void receive(int x, int y) System.out.println("Receive two

19、 int datas");System.out.println("x="+x+" y="+y);public class MethodOverloadingTestpublic static void main(String args) MethodOverloading mo=new MethodOverloading();mo.receive(1);mo.receive(2,3);6 構(gòu)造方法 構(gòu)造方法是一個(gè)特殊的方法。Java 中的每個(gè)類都有構(gòu)造方法,用來(lái)初始化該類的一個(gè)對(duì)象。 構(gòu)造方法具有和類名相同的名稱,而且不返回任何數(shù)據(jù)類型。 重載

20、經(jīng)常用于構(gòu)造方法。 構(gòu)造方法只能由new運(yùn)算符調(diào)用【例3-4】class Pointint x,y;Point()x=0; y=0;Point(int x, int y)this.x=x; this.y=y;322 對(duì)象類實(shí)例化可生成對(duì)象,對(duì)象通過(guò)消息傳遞來(lái)進(jìn)行交互。消息傳遞即激活指定的某個(gè)對(duì)象的方法以改變其狀態(tài)或讓它產(chǎn)生一定的行為。一個(gè)對(duì)象的生命周期包括三個(gè)階段:生成、使用和消除。1. 對(duì)象的生成對(duì)象的生成包括聲明、實(shí)例化和初始化。格式為:type objectName=new type(paramlist); 聲明:type objectName 聲明并不為對(duì)象分配內(nèi)存空間,而只是分配一個(gè)

21、引用空間;對(duì)象的引用類似于指針,是32位的地址空間,它的值指向一個(gè)中間的數(shù)據(jù)結(jié)構(gòu),它存儲(chǔ)有關(guān)數(shù)據(jù)類型的信息以及當(dāng)前對(duì)象所在的堆的地址,而對(duì)于對(duì)象所在的實(shí)際的內(nèi)存地址是不可操作的,這就保證了安全性。 實(shí)例化:運(yùn)算符new為對(duì)象分配內(nèi)存空間,它調(diào)用對(duì)象的構(gòu)造方法,返回引用;一個(gè)類的不同對(duì)象分別占據(jù)不同的內(nèi)存空間。 生成:執(zhí)行構(gòu)造方法,進(jìn)行初始化;根據(jù)參數(shù)不同調(diào)用相應(yīng)的構(gòu)造方法。2. 對(duì)象的使用通過(guò)運(yùn)算符"."可以實(shí)現(xiàn)對(duì)變量的訪問(wèn)和方法的調(diào)用。變量和方法可以通過(guò)設(shè)定訪問(wèn)權(quán)限來(lái)限制其它對(duì)象對(duì)它的訪問(wèn)。調(diào)用對(duì)象的變量格式:objectReference.variableobjectR

22、eference是一個(gè)已生成的對(duì)象,也可以是能生成對(duì)象的表達(dá)式例:p.x= 10;tx=new Point( ).x;調(diào)用對(duì)象的方法格式:objectReference.methodName(paramlist);例如:p.move(30,20);new Point( ).move(30,20);3. 對(duì)象的清除當(dāng)不存在對(duì)一個(gè)對(duì)象的引用時(shí),該對(duì)象成為一個(gè)無(wú)用對(duì)象。Java的垃圾收集器自動(dòng)掃描對(duì)象的動(dòng)態(tài)內(nèi)存區(qū),把沒(méi)有引用的對(duì)象作為垃圾收集起來(lái)并釋放。System.gc( );當(dāng)系統(tǒng)內(nèi)存用盡或調(diào)用System.gc( )要求垃圾回收時(shí),垃圾回收線程與系統(tǒng)同步運(yùn)行。323 面向?qū)ο筇匦詊ava語(yǔ)言中

23、有三個(gè)典型的面向?qū)ο蟮奶匦裕悍庋b性、繼承性和多態(tài)性,下面將詳細(xì)闡述。1 封裝性java語(yǔ)言中,對(duì)象就是對(duì)一組變量和相關(guān)方法的封裝,其中變量表明了對(duì)象的狀態(tài),方法表明了對(duì)象具有的行為。通過(guò)對(duì)象的封裝,實(shí)現(xiàn)了模塊化和信息隱藏。通過(guò)對(duì)類的成員施以一定的訪問(wèn)權(quán)限,實(shí)現(xiàn)了類中成員的信息隱藏。 類體定義的一般格式:class className public | protected | private static final transient volatile typevariableName; /成員變量public | protected | private staticfinal | abstr

24、act native synchronizedreturnType methodName(paramList)throws exceptionListstatements /成員方法 java類中的限定詞java語(yǔ)言中有四種不同的限定詞,提供了四種不同的訪問(wèn)權(quán)限。1) private 類中限定為private的成員,只能被這個(gè)類本身訪問(wèn)。如果一個(gè)類的構(gòu)造方法聲明為private,則其它類不能生成該類的一個(gè)實(shí)例。2) default類中不加任何訪問(wèn)權(quán)限限定的成員屬于缺省的(default)訪問(wèn)狀態(tài),可以被這個(gè)類本身和同一個(gè)包中的類所訪問(wèn)。3) protected類中限定為protected的成員

25、,可以被這個(gè)類本身、它的子類(包括同一個(gè)包中以及不同包中的子類)和同一個(gè)包中的所有其他的類訪問(wèn)。4) public類中限定為public的成員,可以被所有的類訪問(wèn)。表3-1列出了這些限定詞的作用范圍。【表3-1】java中類的限定詞的作用范圍比較同一個(gè)類同一個(gè)包 不同包的子類 不同包非子類private*default *protected*public*2 繼承性通過(guò)繼承實(shí)現(xiàn)代碼復(fù)用。Java中所有的類都是通過(guò)直接或間接地繼承java.lang.Object類得到的。繼承而得到的類稱為子類,被繼承的類稱為父類。子類不能繼承父類中訪問(wèn)權(quán)限為private的成員變量和方法。子類可以重寫(xiě)父類的方法

26、,及命名與父類同名的成員變量。但Java不支持多重繼承,即一個(gè)類從多個(gè)超類派生的能力。 創(chuàng)建子類格式:class SubClass extends SuperClass 成員變量的隱藏和方法的重寫(xiě)子類通過(guò)隱藏父類的成員變量和重寫(xiě)父類的方法,可以把父類的狀態(tài)和行為改變?yōu)樽陨淼臓顟B(tài)和行為。例如:class SuperClassint x; void setX( ) x=0; class SubClass extends SuperClassint x; /隱藏了父類的變量xvoid setX( ) /重寫(xiě)了父類的方法 setX()x=5; .注意:子類中重寫(xiě)的方法和父類中被重寫(xiě)的方法要具有相同的名

27、字,相同的參數(shù)表和相同的返回類型,只是函數(shù)體不同。 superjava中通過(guò)super來(lái)實(shí)現(xiàn)對(duì)父類成員的訪問(wèn),super用來(lái)引用當(dāng)前對(duì)象的父類。Super 的使用有三種情況:1)訪問(wèn)父類被隱藏的成員變量,如:super.variable; 2)調(diào)用父類中被重寫(xiě)的方法,如:super.Method(paramlist);3)調(diào)用父類的構(gòu)造函數(shù),如:super(paramlist);【例3-5】import java.io.*;class SuperClassint x;SuperClass( ) x=3;System.out.println("in SuperClass : x=&qu

28、ot; +x);void doSomething( ) System.out.println("in SuperClass.doSomething()");class SubClass extends SuperClass int x;SubClass( ) super( ); /調(diào)用父類的構(gòu)造方法x=5;/super( ) 要放在方法中的第一句System.out.println("in SubClass :x="+x);void doSomething( ) super.doSomething( ); /調(diào)用父類的方法System.out.print

29、ln("in SubClass.doSomething()");System.out.println("super.x="+super.x+" sub.x="+x);public class Inheritance public static void main(String args) SubClass subC=new SubClass();subC.doSomething();3 多態(tài)性在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)在編譯

30、階段,具體調(diào)用哪個(gè)被重載的方法,編譯器會(huì)根據(jù)參數(shù)的不同來(lái)靜態(tài)確定調(diào)用相應(yīng)的方法。2) 運(yùn)行時(shí)多態(tài)由于子類繼承了父類所有的屬性(私有的除外),所以子類對(duì)象可以作為父類對(duì)象使用。程序中凡是使用父類對(duì)象的地方,都可以用子類對(duì)象來(lái)代替。一個(gè)對(duì)象可以通過(guò)引用子類的實(shí)例來(lái)調(diào)用子類的方法。 重寫(xiě)方法的調(diào)用原則:java運(yùn)行時(shí)系統(tǒng)根據(jù)調(diào)用該方法的實(shí)例,來(lái)決定調(diào)用哪個(gè)方法。對(duì)子類的一個(gè)實(shí)例,如果子類重寫(xiě)了父類的方法,則運(yùn)行時(shí)系統(tǒng)調(diào)用子類的方法;如果子類繼承了父類的方法(未重寫(xiě)),則運(yùn)行時(shí)系統(tǒng)調(diào)用父類的方法。在例3-6中,父類對(duì)象a引用的是子類的實(shí)例,所以,java運(yùn)行時(shí)調(diào)用子類B的callme方法。【例3-6】

31、import java.io.*;class Avoid callme( ) System.out.println("Inside A's callme()method"); class B extends Avoid callme( ) System.out.println("Inside B's callme() Method"); public class Dispatchpublic static void main(String args) A a=new B();a.callme( ); 方法重寫(xiě)時(shí)應(yīng)遵循的原則:1)改寫(xiě)后的方

32、法不能比被重寫(xiě)的方法有更嚴(yán)格的訪問(wèn)權(quán)限(可以相同)。2)改寫(xiě)后的方法不能比重寫(xiě)的方法產(chǎn)生更多的例外。4 其它 final 關(guān)鍵字final 關(guān)鍵字可以修飾類、類的成員變量和成員方法,但final 的作用不同。1) final 修飾成員變量:final修飾變量,則成為常量,例如final type variableName;修飾成員變量時(shí),定義時(shí)同時(shí)給出初始值,而修飾局部變量時(shí)不做要求。2) final 修飾成員方法:final修飾方法,則該方法不能被子類重寫(xiě)final returnType methodName(paramList)3) final 類: final修飾類,則類不能被繼承fin

33、al class finalClassName 實(shí)例成員和類成員用static 關(guān)鍵字可以聲明類變量和類方法,其格式如下:static type classVar;static returnType classMethod(paramlist) 如果在聲明時(shí)不用static 關(guān)鍵字修飾,則聲明為實(shí)例變量和實(shí)例方法。1) 實(shí)例變量和類變量每個(gè)對(duì)象的實(shí)例變量都分配內(nèi)存,通過(guò)該對(duì)象來(lái)訪問(wèn)這些實(shí)例變量,不同的實(shí)例變量是不同的。類變量?jī)H在生成第一個(gè)對(duì)象時(shí)分配內(nèi)存,所有實(shí)例對(duì)象共享同一個(gè)類變量,每個(gè)實(shí)例對(duì)象對(duì)類變量的改變都會(huì)影響到其它的實(shí)例對(duì)象。類變量可通過(guò)類名直接訪問(wèn),無(wú)需先生成一個(gè)實(shí)例對(duì)象,也可以通過(guò)實(shí)例對(duì)象訪問(wèn)類變量。2

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論