




已閱讀5頁(yè),還剩32頁(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)介
面向?qū)ο蟮奶匦?目標(biāo),有關(guān)面向?qū)ο蟮母拍?Java的類(lèi) Java的對(duì)象 Java的面向?qū)ο筇匦?抽象類(lèi)和接口 Inner Class 總結(jié),面向?qū)ο蟮母拍?面向?qū)ο蟪绦蛟O(shè)計(jì)圍繞的幾個(gè)主要概念: 抽象數(shù)據(jù)類(lèi)型、類(lèi)、類(lèi)型層次(子類(lèi)),封裝性,繼承性、多態(tài)性 對(duì)象,消息和方法,抽象數(shù)據(jù)類(lèi)型,class Car int color_number; int door_number; int speed; void brake() void speedUp() ; void slowDown() ,抽象數(shù)據(jù)類(lèi)型,類(lèi),什么是類(lèi)? 類(lèi)是描述對(duì)象的“基本原型”,它定義一種對(duì)象所能擁有的數(shù)據(jù)和能完成的操作,在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,類(lèi)是程序的基本單元。 程序中的對(duì)象 是類(lèi)的一個(gè)實(shí)例,是一個(gè)軟件單元, 它由一組結(jié)構(gòu)化的數(shù)據(jù)和 在其上的一組操作構(gòu)成。,變量:即指對(duì)象的所知道的狀態(tài) 方法:指對(duì)象的功能單元。 什么是消息? 軟件對(duì)象通過(guò)相互間傳遞消息來(lái)相互作用和通信 一個(gè)消息由三部分組成: 1. 接受消息的對(duì)象 2. 要完成方法的名字 3. 方法需要的參數(shù),一個(gè)例子 在程序中操作對(duì)象是類(lèi)的一個(gè)實(shí)例:即對(duì)象 創(chuàng)建一個(gè)對(duì)象 Hello obj=new Hello(); 調(diào)用方法 obj.showString(“Hello World!”),class Hello ,private String s;,public void showString () System.out.println(s); public void changeString(String str) s=str; return s;,封裝,什么是封裝? 封裝把對(duì)象的所有組成部分組合在一起,封裝定義程序如何引用對(duì)象的數(shù)據(jù),封裝實(shí)際上使用方法將類(lèi)的數(shù)據(jù)隱藏起來(lái),控制用戶對(duì)類(lèi)的修改和訪問(wèn)數(shù)據(jù)的程度。,子類(lèi),什么是子類(lèi)? 子類(lèi)是作為另一個(gè)類(lèi)的擴(kuò)充或修正所定義的一個(gè)類(lèi).,bicycle,(super class),Mountain bikes,Racing bikes,Tandem bikes,sub class,繼承,繼承是子類(lèi)利用父類(lèi)中定義的方法和變量就像它們屬于子類(lèi)本身一樣.,class Car int color_number; int door_number; int speed; push_break() add_oil() ,class Trash_Car extends Car double amount; fill_trash() ,何時(shí)選擇繼承性,一個(gè)很好的經(jīng)驗(yàn): “B是一個(gè)A嗎?” 如果是則讓B做A的子類(lèi). 常犯的錯(cuò)誤:A有一個(gè)B嗎? 例如讓汽車(chē)輪子成為汽車(chē)的子類(lèi)是錯(cuò)誤的,方法重寫(xiě)(overridden),什么是方法的覆蓋(重寫(xiě))? 在子類(lèi)中重新定義父類(lèi)中已有的方法,class Car int color_number; int door_number; int speed; push_break() speed=0; add_oil() ,class Trash_Car extends Car double amount; fill_trash() push_break() speed=speed-10; ,多態(tài)性(polymorphic),什么是方法的重載(多態(tài)性)? 在同一個(gè)類(lèi)中至少有兩個(gè)方法用同一個(gè)名字,但有不同的參數(shù)。,類(lèi),void show(int int_num),void show(double double_num),void show(nit nit_ um, float float_um),123,1.23,123,1.23,Java 類(lèi)定義,包括類(lèi)聲明和類(lèi)體 類(lèi)聲明: publicabstract|final class className extends superclassName implements interfaceNameList ,類(lèi)體定義如下: class className public | protected | private static final transient volatile type variableName; /成員變量 public | protected | private static final | abstract native synchronized returnType methodName(paramList) throws exceptionList statements /成員方法 ,成員變量,public | protected | private static final transient volatile type variableName; /成員變量 static: 靜態(tài)變量(類(lèi)變量;相對(duì)于實(shí)例變量 final: 常量,成員方法,public | protected | private static final | abstract native synchronized returnType methodName(paramList) throws exceptionList /方法聲明 statements /方法體 方法聲明 static: 類(lèi)方法,可通過(guò)類(lèi)名直接調(diào)用 abstract: 抽象方法,沒(méi)有方法體 final: 方法不能被重寫(xiě) native: 集成其它語(yǔ)言的代碼 synchronized: 控制多個(gè)并發(fā)線程的訪問(wèn),成員方法(值參傳遞),public class PassTest float ptValue /全局變量 public static void main(String args) int val; PassTest pt=new PassTest(); val=1 System.out.println(“Original Int Value is:”+val); 1 pt.changedInt(val); /參數(shù)傳遞 System.out.pringln(“Int Value after Change is:” +val); 1 pt.ptValue=101f; /對(duì)象調(diào)用變量 System.out.println(“Original ptValue is:”+pt.ptValue); pt.ChangeObjValue(pt); /對(duì)象傳遞 System.out.println(“ptValue after Change is:”+pt.ptValue); public void changeInt(int value) value=55; public void changeObjValue(PassTest ref) ref.ptValue=99f; ,方法體包括局部變量的聲明以及所有合法的Java指令。 局部變量的作用域在該方法內(nèi)部。 若局部變量與類(lèi)的成員變量同名,則類(lèi)的成員變量被隱藏。,class Variable int x=0,y=0,z=0; /類(lèi)的成員變量 void init(int x,int y) this.x=x; this.y=y; / 用this指向當(dāng)前對(duì)象 int z=5; /局部變量 System.out.println(“* in init*”); System.out.(“x=”+x+“ y=”+y+“ z=”+z) ,public class VariableTest public 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(“*after init*”);,System.out.println(“x=”+v.x+ “y=”+ v.y+“z=”+v.z); ,this-用在一個(gè)方法中引用當(dāng)前對(duì)象,它的值是調(diào)用該 方法的對(duì)象。 返回值須與返回類(lèi)型一致,或是其子類(lèi) 返回類(lèi)型是接口時(shí),返回值必須實(shí)現(xiàn)該接口。,方法重載(Method Overloading),方法重載指多個(gè)方法享有相同的方法名 區(qū)別在于:參數(shù)類(lèi)型不同,或個(gè)數(shù)不同; 返回類(lèi)型不能用來(lái)區(qū)分重載的方法。,class MethodOverloading void receive(int i) void receive(int x, int y) void receive(double d) void receive(String s) ,public class MethodOverloadingTest public static void main(String args) MethodOverloading mo=new MethodOverloading(); mo.receive(1); mo.receive(2,3); mo.receive(12.56); mo.receive(“very interesting, isnt it?”); ,構(gòu)造方法,重載經(jīng)常用于構(gòu)造方法 構(gòu)造方法具有和類(lèi)名相同的名稱,而且不返回任何數(shù)據(jù)類(lèi)型,即沒(méi)有返回值 構(gòu)造方法只能由new運(yùn)算符調(diào)用 利用構(gòu)造方法進(jìn)行初始化 構(gòu)造方法不能被繼承,class Point int x,y; Point() x=0; y=0; Point(int x, int y) this.x=x; this.y=y; ,finalize()方法,在根類(lèi)java.land.Object中實(shí)現(xiàn) 對(duì)對(duì)象進(jìn)行垃圾收集前,系統(tǒng)自動(dòng)調(diào)用 自己重寫(xiě)時(shí)需要調(diào)用父類(lèi)的finalize()方法, protected void finalize() throws throwable /clean up code for this class super.finalize(); ,Java對(duì)象,類(lèi)實(shí)例化可生成對(duì)象 對(duì)象通過(guò)消息傳遞來(lái)進(jìn)行交互 消息傳遞即激活指定的某個(gè)對(duì)象的方法以改變其狀態(tài)或讓它產(chǎn)生一定的行為。 public class HelloWorldApp public static void main(String args) System.out.println(“hello”); ,對(duì)象的生命周期,生成 使用 清除,實(shí)例化對(duì)象的過(guò)程,包括聲明、實(shí)例化和初始化 格式: type objectName=new type(paramlist); (1)聲明:type objectName 聲明并不為對(duì)象分配內(nèi)存空間,而只是分配一個(gè)引用空間; (2)實(shí)例化:運(yùn)算符new為對(duì)象分配內(nèi)存空間,它調(diào)用對(duì)象的構(gòu)造方法,返回引用;一個(gè)類(lèi)的不同對(duì)象分別占據(jù)不同的內(nèi)存空間。,(3)生成:執(zhí)行構(gòu)造方法,進(jìn)行初始化;根據(jù)參數(shù)不同調(diào)用相應(yīng)的構(gòu)造方法。 對(duì)象的引用指向一個(gè)中間的數(shù)據(jù)結(jié)構(gòu),它存儲(chǔ)有關(guān)數(shù)據(jù)類(lèi)型的信息以及當(dāng)前對(duì)象所在的堆的地址,而對(duì)于對(duì)象所在的實(shí)際的內(nèi)存地址是不可操作的,這就保證了安全性。 通過(guò)運(yùn)算符“.”可以實(shí)現(xiàn)對(duì)變量的訪問(wèn)和方法的調(diào)用。 設(shè)定訪問(wèn)權(quán)限來(lái)限制其它對(duì)象對(duì)它的訪問(wèn),調(diào)用對(duì)象的變量,格式:objectReference.variabl
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 設(shè)計(jì)公司質(zhì)量管理制度
- 評(píng)估公司崗位管理制度
- 診所醫(yī)療垃圾管理制度
- 診所藥品工作管理制度
- 試劑耗材訂購(gòu)管理制度
- 財(cái)務(wù)采購(gòu)流程管理制度
- 財(cái)政收支業(yè)務(wù)管理制度
- 貨架護(hù)欄倉(cāng)庫(kù)管理制度
- 貨運(yùn)物流司機(jī)管理制度
- 2025年中國(guó)戶外地板行業(yè)市場(chǎng)全景分析及前景機(jī)遇研判報(bào)告
- 幼兒園獲獎(jiǎng)公開(kāi)課:中班語(yǔ)言美術(shù)《有趣的西瓜皮》課件
- 室內(nèi)零星維修工程施工方案
- 科技引領(lǐng)冰雪旅游智能設(shè)施與游客體驗(yàn)的融合
- 2025年勞動(dòng)合同樣本(電子版)
- 2025年湖南金葉煙草薄片有限責(zé)任公司招聘筆試參考題庫(kù)含答案解析
- 赤峰市水體達(dá)標(biāo)方案 (2019-2020年)
- I-MR(單值-移動(dòng)極差)控制圖
- 《鄒忌諷齊王納諫》比較閱讀82篇(歷年中考語(yǔ)文文言文閱讀試題匯編)(含答案與翻譯)(截至2024年)
- 政府應(yīng)急管理與協(xié)調(diào)機(jī)制
- 轉(zhuǎn)讓幼兒園經(jīng)營(yíng)權(quán)協(xié)議書(shū)
- 2024全國(guó)初中數(shù)學(xué)競(jìng)賽試題及答案
評(píng)論
0/150
提交評(píng)論