面向?qū)ο蟮奶匦訽第1頁
面向?qū)ο蟮奶匦訽第2頁
面向?qū)ο蟮奶匦訽第3頁
面向?qū)ο蟮奶匦訽第4頁
面向?qū)ο蟮奶匦訽第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、面向?qū)ο蟮奶匦悦嫦驅(qū)ο蟮奶匦阅繕?biāo) 有關(guān)面向?qū)ο蟮母拍?java的類 java的對象 java的面向?qū)ο筇匦?抽象類和接口 inner class 總結(jié)面向?qū)ο蟮母拍蠲嫦驅(qū)ο蟪绦蛟O(shè)計圍繞的幾個主要概念: 抽象數(shù)據(jù)類型、類、類型層次(子類),封裝性,繼承性、多態(tài)性 對象,消息和方法抽象數(shù)據(jù)類型 class car int color_number; int door_number; int speed; void brake() void speedup() ; void slowdown() 計算機中的對象的原型 現(xiàn)實生活中的對象抽象數(shù)據(jù)類型抽象數(shù)據(jù)類型類 什么是類? 類是描述對象的“基本原型”

2、,它定義一種對象所能擁有的數(shù)據(jù)和能完成的操作,在面向?qū)ο蟮某绦蛟O(shè)計中,類是程序的基本單元。 程序中的對象 是類的一個實例,是一個軟件單元, 它由一組結(jié)構(gòu)化的數(shù)據(jù)和 在其上的一組操作構(gòu)成。variablesmethods 變量:即指對象的所知道的狀態(tài) 方法:指對象的功能單元。 什么是消息? 軟件對象通過相互間傳遞消息來相互作用和通信 一個消息由三部分組成: 1. 接受消息的對象 2. 要完成方法的名字 3. 方法需要的參數(shù)對象對象b對象對象 amessage 一個例子 在程序中操作對象是類的一個實例:即對象 創(chuàng)建一個對象 hello obj=new hello(); 調(diào)用方法 obj.shows

3、tring(“hello world!”)class hello private string s;public void showstring () system.out.println(s);public void changestring(string str) s=str; return s; 封裝 什么是封裝? 封裝把對象的所有組成部分組合在一起,封裝定義程序如何引用對象的數(shù)據(jù),封裝實際上使用方法將類的數(shù)據(jù)隱藏起來,控制用戶對類的修改和訪問數(shù)據(jù)的程度。子類 什么是子類? 子類是作為另一個類的擴充或修正所定義的一個類.bicycle(super class)mountain bikes

4、racing bikestandem bikessub class繼承 繼承是子類利用父類中定義的方法和變量就像它們屬于子類本身一樣.class car int color_number; int door_number; int speed; push_break() add_oil() class trash_car extends car double amount; fill_trash() 何時選擇繼承性 一個很好的經(jīng)驗: “b是一個a嗎?” 如果是則讓b做a的子類. 常犯的錯誤:常犯的錯誤:a有一個有一個b嗎嗎? 例如讓汽車?yán)缱屍囕喿映蔀槠嚨淖宇愂清e誤的輪子成為汽車的子類是錯

5、誤的方法重寫(overridden) 什么是方法的覆蓋(重寫)? 在子類中重新定義父類中已有的方法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)性)? 在同一個類中至少有兩個方法用同一個名字,但有不同的參數(shù)。類類void show(int in

6、t_num)void show(double double_num)void show(nit nit_ um, float float_um)1231.23123,1.23java 類定義 包括類聲明和類體 類聲明: publicabstract|final class classname extends superclassname implements interfacenamelist 類體定義如下: class classname public | protected | private static final transient volatile type variablenam

7、e; /成員變量 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)變量(類變量;相對于實例變量 final: 常量 成員方法public | protected

8、 | private static final | abstract native synchronized returntype methodname(paramlist) throws exceptionlist /方法聲明 statements /方法體 方法聲明 static: 類方法,可通過類名直接調(diào)用 abstract: 抽象方法,沒有方法體 final: 方法不能被重寫 native: 集成其它語言的代碼 synchronized: 控制多個并發(fā)線程的訪問成員方法(值參傳遞)public class passtest float ptvalue; public static vo

9、id main(string args) int val; passtest pt=new passtest(); val=11; system.out.println(“original int value is:”+val); pt.changedint(val); system.out.pringln(“int value after change is:” +val); pt.ptvalue=101f; system.out.println(“original ptvalue is:”+pt.ptvalue); pt.changeobjvalue(pt); system.out.pri

10、ntln(“ptvalue after change is:”+pt.ptvalue); public void changeint(int value) value=55;public void changeobjvalue(passtest ref) ref.ptvalue=99f; 方法體包括局部變量的聲明以及所有合法的java指令。 局部變量的作用域在該方法內(nèi)部。 若局部變量與類的成員變量同名,則類的成員變量被隱藏。class variable int x=0,y=0,z=0; /類的成員變量 void init(int x,int y) this.x=x; this.y=y; int

11、 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

12、 init*”);system.out.println(“x=”+v.x+ “y=”+ v.y+“z=”+v.z); this-用在一個方法中引用當(dāng)前對象,它的值是調(diào)用該方法的對象。 返回值須與返回類型一致,或是其子類 返回類型是接口時,返回值必須實現(xiàn)該接口。方法重載(method overloading) 方法重載指多個方法享有相同的方法名 區(qū)別在于:參數(shù)類型不同,或個數(shù)不同; 返回類型不能用來區(qū)分重載的方法。class methodoverloading void receive(int i) void receive(int x, int y) void receive(double d

13、) 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)造方法具有和類名相同的名稱,而且不返回任何數(shù)據(jù)類型 構(gòu)造方法只能由new運算符調(diào)用 利用構(gòu)造方

14、法進(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()方法 在根類java.land.object中實現(xiàn) 對對象進(jìn)行垃圾收集前,系統(tǒng)自動調(diào)用 自己重寫時需要調(diào)用父類的finalize()方法, protected void finalize() throws throwable /clean up code for this class super.finalize(); java對象 類實例化可生成對象 對象通過消息傳遞來進(jìn)行交互 消息傳

15、遞即激活指定的某個對象的方法以改變其狀態(tài)或讓它產(chǎn)生一定的行為。 public class helloworldapp public static void main(string args) system.out.println(“hello”); 對象的生命周期 生成 使用 清除 包括聲明、實例化和初始化 格式: type objectname=new type(paramlist);(1)聲明:type objectname 聲明并不為對象分配內(nèi)存空間,而只是分配一個引用空間;(2)實例化:運算符new為對象分配內(nèi)存空間,它調(diào)用對象的構(gòu)造方法,返回引用;一個類的不同對象分別占據(jù)不同的內(nèi)存空間。(3)生成:執(zhí)行構(gòu)造方法,進(jìn)行初始化;根據(jù)參數(shù)不同調(diào)用相應(yīng)的構(gòu)造方法。 對象的引用指向一個中間的數(shù)據(jù)結(jié)構(gòu),它存儲有關(guān)數(shù)據(jù)類型的信息以及當(dāng)前對象所在的堆的地址,而對于對象所在的實際的內(nèi)存地址是不可操作的,這就保證了安全性。 通過運算符“.”可以實現(xiàn)對變量的訪問和方法的調(diào)用。 設(shè)定訪問權(quán)限來限制其它對象對它的訪問調(diào)用對象的變量 格式:objectreference.varia

溫馨提示

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

最新文檔

評論

0/150

提交評論