版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、1第四章第四章 Java面向?qū)ο筇匦悦嫦驅(qū)ο筇匦詫ο笈c類對象與類對象生命周期對象生命周期類的創(chuàng)建類的創(chuàng)建重載重載子類子類2對象的基本概念對象的基本概念面向?qū)ο蟪绦蛘Z言三個關(guān)鍵特點:面向?qū)ο蟪绦蛘Z言三個關(guān)鍵特點:封裝封裝 ( Encapsulation )多態(tài)多態(tài) ( Polymorphism )繼承繼承 ( Inheritance )3基本數(shù)據(jù)類型和聚集類型的變量與一些操作基本數(shù)據(jù)類型和聚集類型的變量與一些操作(如(如+, -)之間不需特殊的聯(lián)系。)之間不需特殊的聯(lián)系。在面向?qū)ο笳Z言中,在數(shù)據(jù)類型的聲明與操作在面向?qū)ο笳Z言中,在數(shù)據(jù)類型的聲明與操作 這些數(shù)據(jù)的代碼聲明之間建立緊密聯(lián)系,這種這些
2、數(shù)據(jù)的代碼聲明之間建立緊密聯(lián)系,這種 聯(lián)系通常描述為一種抽象數(shù)據(jù)類型。聯(lián)系通常描述為一種抽象數(shù)據(jù)類型。 在在Java中,抽象數(shù)據(jù)類型的概念用類來實現(xiàn)。中,抽象數(shù)據(jù)類型的概念用類來實現(xiàn)。 抽象數(shù)據(jù)類型抽象數(shù)據(jù)類型4類和對象類和對象類是特定類型對象的定義,包括:對象包含的類是特定類型對象的定義,包括:對象包含的 數(shù)據(jù),對象的創(chuàng)建及對象對自身數(shù)據(jù)操作的方法。數(shù)據(jù),對象的創(chuàng)建及對象對自身數(shù)據(jù)操作的方法。類是一個模板。類是一個模板。對象是在其類模型基礎(chǔ)上構(gòu)造出的,是具體的對象是在其類模型基礎(chǔ)上構(gòu)造出的,是具體的 實例。實例。5類和對象舉例類和對象舉例類定義:類定義:Class EmpInfoString
3、 name;String designation;String department;void print( ) System.out.println(name+“is”+designation+“at”+department);對象的生成與使用:對象的生成與使用:EmpInfo employee = new EmpInfo( ); = “ Robert Javaman”;employee.designation = “Manager”;employee.department = “Coffee shop”;employee.print( ); .6對象生命周期對象生
4、命周期 創(chuàng)建對象創(chuàng)建對象 使用對象使用對象 清除不用的對象清除不用的對象7創(chuàng)建對象創(chuàng)建對象例:例:Point origin_one ;origin_one = new Point(23, 94);Rectangle rect_one = new Rectangle(origin_one, 100, 200);Rectangle rect_two = new Rectangle(50, 100);創(chuàng)建對象的三個步驟:創(chuàng)建對象的三個步驟: 聲明聲明 (Declaration ) 實例化(實例化(Instantiation) 初始化(初始化(Initialization)8對象實例化過程對象實例化過
5、程構(gòu)造與初始化對象的過程(調(diào)用構(gòu)造與初始化對象的過程(調(diào)用new Xxxx(): 開辟內(nèi)存空間(變量、方法體代碼)及類成員開辟內(nèi)存空間(變量、方法體代碼)及類成員 變量變量的初始化的初始化:數(shù)值型:數(shù)值型:0; 布爾型:布爾型:false; 引用型:引用型:null; 字符串型:字符串型:null; 顯式初始化:執(zhí)行類成員聲明時帶有的簡單顯式初始化:執(zhí)行類成員聲明時帶有的簡單 賦值賦值表達式。表達式。 public class Initializedprivate int x = 5 ;private String name = “Fred”; 執(zhí)行構(gòu)造函數(shù)。執(zhí)行構(gòu)造函數(shù)。9對象的回收對象的回
6、收垃圾收集機制(垃圾收集機制(garbage collection):):Java運行環(huán)境當(dāng)確定運行環(huán)境當(dāng)確定某個對象不再被使用時,將其刪除。某個對象不再被使用時,將其刪除。一個對象在沒有引用指向它時,可作為垃圾收集。一個對象在沒有引用指向它時,可作為垃圾收集。垃圾搜集器:垃圾搜集器:Java運行環(huán)境中的垃圾搜集器周期性地釋放運行環(huán)境中的垃圾搜集器周期性地釋放不用對象占用的空間。不用對象占用的空間。10垃圾收集機制垃圾收集機制C+:A *a=new A( );A *b=a;A *c=a;Java :A a=new A( );A b=a;A c=a;a b c b c(指針懸空)a b c b
7、c/a 使用完,將其刪除使用完,將其刪除delete a; /a 使用完,將其刪除使用完,將其刪除 a= null ; 11類的創(chuàng)建類的創(chuàng)建z 12構(gòu)造方法定義:構(gòu)造方法定義: public 類名(參數(shù))類名(參數(shù)) 注意:注意:方法名必須與類名相同。方法名必須與類名相同。不能帶返回類型。不能帶返回類型。類的構(gòu)造函數(shù)類的構(gòu)造函數(shù)13如果在類定義中無構(gòu)造函數(shù),如果在類定義中無構(gòu)造函數(shù),Java在編譯時在編譯時可缺省加入構(gòu)造方法。如可缺省加入構(gòu)造方法。如 public Employee( ) ;一旦在類中有一個自己聲明的構(gòu)造函數(shù),則缺省一旦在類中有一個自己聲明的構(gòu)造函數(shù),則缺省的構(gòu)造函數(shù)將不被加到
8、源程序中。的構(gòu)造函數(shù)將不被加到源程序中。缺省構(gòu)造函數(shù)缺省構(gòu)造函數(shù)14類成員方法定義類成員方法定義一般格式:一般格式: ()throws 方法是傳值的,方法調(diào)用不會改變參數(shù)的值。方法是傳值的,方法調(diào)用不會改變參數(shù)的值。當(dāng)對象作為參數(shù)時,參數(shù)的值是該對象的引用,當(dāng)對象作為參數(shù)時,參數(shù)的值是該對象的引用, 這時對象的內(nèi)容可以在方法中改變,但是對象的這時對象的內(nèi)容可以在方法中改變,但是對象的 引用不會改變。引用不會改變。15舉例舉例Public class PassTestfloat ptValue;public void changeInt(int value)value = 55 ; public
9、 void changeStr(String value)value = new String(different“); public void changeObjValue( PassTest ref)ref.ptValue = 99.0f; public static void main(String args )String str;int val;PassTest pt= new PassTest( );val = 11;pt.changeInt(val);System.out.println(“Int value is:” +val);str = new String(“hello”
10、);pt.changeStr(str);System.out.println(“str value is:” +str);pt.ptvalue = 101.0f ;pt.changeObjValue(pt);System.out.println(“pt value is:” +pt.ptValue);結(jié)果:結(jié)果: Int Value is : 11Str Value is : hellopt value is : 99.0f16數(shù)據(jù)隱藏與封裝數(shù)據(jù)隱藏與封裝數(shù)據(jù)隱藏:使用數(shù)據(jù)隱藏:使用private定義的成員變量,只能定義的成員變量,只能 在成員方法中使用,其它方法中禁止使用。在成員方法中使用,
11、其它方法中禁止使用。優(yōu)點:優(yōu)點: 保證對象中數(shù)據(jù)的一致性。保證對象中數(shù)據(jù)的一致性。封裝:基本數(shù)據(jù)和對數(shù)據(jù)進行的操作方法的結(jié)合。封裝:基本數(shù)據(jù)和對數(shù)據(jù)進行的操作方法的結(jié)合。 優(yōu)點:優(yōu)點:隱藏類中具體實現(xiàn)的細(xì)節(jié)。隱藏類中具體實現(xiàn)的細(xì)節(jié)。強迫程序員使用統(tǒng)一的接口訪問數(shù)據(jù)。強迫程序員使用統(tǒng)一的接口訪問數(shù)據(jù)。使代碼可維護性好。使代碼可維護性好。17數(shù)據(jù)隱藏與封裝舉例數(shù)據(jù)隱藏與封裝舉例Class Dateprivate int day, month, year;void setDate( int a, int b, int c)day = a;month = b;year = c ;Date d1;d1.
12、new Date( );d1.setDate(30,9,2001);.d1.day = 30;(錯誤!)錯誤?。?8“this “引用引用關(guān)鍵字關(guān)鍵字this 用來指向當(dāng)前對象本身。用來指向當(dāng)前對象本身。例:例:class Date private int day, month,year;public Date getTommorrow( )this.day+;19重載(重載(Overloading)含義:在同一個類中一個方法名被用來定義多個含義:在同一個類中一個方法名被用來定義多個 方法。方法。 classScreen public void print( int i) public voi
13、d print( float i) public void print( String str ) 重載必須遵守原則:重載必須遵守原則: 參數(shù)表必須不同,以此區(qū)分不同方法體。參數(shù)表必須不同,以此區(qū)分不同方法體。返回類型、修飾符可相同或不相同。返回類型、修飾符可相同或不相同。20激活重載的構(gòu)造函數(shù)激活重載的構(gòu)造函數(shù)在一個構(gòu)造函數(shù)中可以利用另一個構(gòu)造函數(shù)。在一個構(gòu)造函數(shù)中可以利用另一個構(gòu)造函數(shù)。class Employeeprivate String name;private int salary;public Employee(String n, int s)name = n ;salary =
14、 s;public Employee( String n) this(n,0); public Employee( ) this(“Unknown”); 21子類子類子類表示類之間一種子類表示類之間一種“屬于屬于”( is a )關(guān)系。關(guān)系。例:例:public class Employee String name ;Date hireDate ;Date dateofBirth ;String jobTitle ;int grade ;public class Manager String name ;Date hireDate ;Date dateofBirth ;String jobTi
15、tle ;int grade ;String department ;Employee subordinates;22 Java中用中用 extends 關(guān)鍵字定義子類。關(guān)鍵字定義子類。Extends 關(guān)鍵字關(guān)鍵字public class Employee String name ;Date hireDate ;Date dateofBirth ;String jobTitle ;int grade ;子類是從已有的類創(chuàng)建新類的一種方法。子類是從已有的類創(chuàng)建新類的一種方法。public class Manager extends Employee String department ;Empl
16、oyee subordinates; 23子類子類子類繼承父類的屬性、功能(方法),子類中只子類繼承父類的屬性、功能(方法),子類中只 需聲明特有的東西。需聲明特有的東西。帶帶private 修飾符的屬性、方法是不能被繼承的。修飾符的屬性、方法是不能被繼承的。構(gòu)造函數(shù)不能被繼承。構(gòu)造函數(shù)不能被繼承。在方法中調(diào)用構(gòu)造方法用在方法中調(diào)用構(gòu)造方法用this()。調(diào)用父類的構(gòu)造方法用調(diào)用父類的構(gòu)造方法用super()。 - super 指向該關(guān)鍵字所在類的父類。指向該關(guān)鍵字所在類的父類。24構(gòu)造不同類型數(shù)據(jù)的集合構(gòu)造不同類型數(shù)據(jù)的集合 Java中允許構(gòu)造如下類型的數(shù)組:中允許構(gòu)造如下類型的數(shù)組: Em
17、ployee staff = new Employee1024;staff0 = new Manager( );staff1 = new Worker();staff2 = new Employee(); - staff 是由多種類型的對象組成的。是由多種類型的對象組成的。 Java中任何一個子類的實例都可作為父類的實例中任何一個子類的實例都可作為父類的實例使用,可以調(diào)用父類具有的方法。使用,可以調(diào)用父類具有的方法。25單繼承單繼承 Java是單繼承的,即只能從一個類繼承,是單繼承的,即只能從一個類繼承, extends后類名只能有一個。后類名只能有一個。單繼承的優(yōu)點:單繼承的優(yōu)點:代碼更可靠
18、代碼更可靠可以用接口彌補可以用接口彌補 用一個類實現(xiàn)多個接口,達到多繼承效果。用一個類實現(xiàn)多個接口,達到多繼承效果。26重寫(重寫(Overriding methods)子類可以改變從父類繼承的行為。子類可以改變從父類繼承的行為。被重寫方法的返回值、方法名、參數(shù)列表要被重寫方法的返回值、方法名、參數(shù)列表要 與父類中的方法完全一樣。與父類中的方法完全一樣。27Overriding Overriding 示例示例public class Stack private Vector items; / code for Stacks methods and constructor not shown /
19、 overrides Objects toString method public String toString() int n = items.size(); StringBuffer result = new StringBuffer(); result.append(); for (int i = 0; i n; i+) result.append(items.elementAt(i).toString(); if (i n-1) result.append(,); result.append(); return result.toString(); 28方法重寫的規(guī)則方法重寫的規(guī)則必
20、須返回與原來方法完全相同的返回值。必須返回與原來方法完全相同的返回值。方法的訪問權(quán)限不能縮小。方法的訪問權(quán)限不能縮小。不能拋出新的例外。不能拋出新的例外。29多多 態(tài)態(tài)An object has only one form, while a variable is polymorphism,since it can refer to objects of different forms,polymorphism is the ability to have many different forms.30 Java允許父類對象的變量作為子類對象的變量允許父類對象的變量作為子類對象的變量 使用。使
21、用。 如:如:Employee e = new Manager( );但通過該變量但通過該變量(如如e)只能訪問父類的方法,子類只能訪問父類的方法,子類特有的部分被隱藏。特有的部分被隱藏。運行時確定使用父類還是子類的方法。運行時確定使用父類還是子類的方法。 Employee e = new Manager(); e.getDetails();多多 態(tài)態(tài)31Super關(guān)鍵字關(guān)鍵字Super指向該關(guān)鍵字所在類的父類。指向該關(guān)鍵字所在類的父類。Public class Empolyee private String name ;private int salary;public String get
22、Details( )return “Name: ”+name+“nSalary:”+salary;public class Manager extends Empolyee private String department ;public String getDetails( )return super.getDetailes( )+nDepartment: “+department;32“instanceof”及類型強制轉(zhuǎn)換及類型強制轉(zhuǎn)換 Instanceof 測試對象類型測試對象類型 Empolyee a = new Manager(); 則則 a instanceof Manager
23、為為true;類型轉(zhuǎn)換類型轉(zhuǎn)換父類弱、子類強,指向父類的引用不能直接按子類引用,父類弱、子類強,指向父類的引用不能直接按子類引用,必須要強制類型轉(zhuǎn)換后才能作為子類的引用使用。必須要強制類型轉(zhuǎn)換后才能作為子類的引用使用。例:例:public void method( Employee e)if (e instanceof Manager)Manager m = (Manager) e ;m.department = “”; 33子類對象的初始化子類對象的初始化初始化對象是很結(jié)構(gòu)化的。初始化對象是很結(jié)構(gòu)化的。在對對象初始化時,分三步:在對對象初始化時,分三步:分配空間,并初始化為分配空間,并初始化
24、為“0”值。值。按繼承關(guān)系從頂向下顯式初始化。按繼承關(guān)系從頂向下顯式初始化。按繼承關(guān)系從頂向下調(diào)用構(gòu)造函數(shù)。按繼承關(guān)系從頂向下調(diào)用構(gòu)造函數(shù)。34調(diào)用父類構(gòu)造方法調(diào)用父類構(gòu)造方法缺省是不帶參數(shù)的構(gòu)造方法。缺省是不帶參數(shù)的構(gòu)造方法。如果需要調(diào)用特殊的父類構(gòu)造方法,則需在如果需要調(diào)用特殊的父類構(gòu)造方法,則需在子類構(gòu)造方法中第一行通過子類構(gòu)造方法中第一行通過super( )調(diào)用。調(diào)用。 class Employee .public Employee( String n)name=n;class Manager entends Emplyeepublic Manager( String s,String
25、 d)super(s);. 35Object Object 及其子類及其子類Object定義了所有對象都需要的狀態(tài)和行定義了所有對象都需要的狀態(tài)和行為。如對象之間的比較、將對象轉(zhuǎn)換為字為。如對象之間的比較、將對象轉(zhuǎn)換為字符串、等待某個條件變量、當(dāng)某條件變量符串、等待某個條件變量、當(dāng)某條件變量改變時通知相關(guān)對象改變時通知相關(guān)對象 以及返回對象的類。以及返回對象的類。36在在ObjectObject子類中可以重寫的方法:子類中可以重寫的方法:cloneclone equalsequalsfinalizefinalize toStringtoString :返回對象的字符串表示,表達的內(nèi)容因具體的對
26、象而異:返回對象的字符串表示,表達的內(nèi)容因具體的對象而異 在在ObjectObject子類中不能重寫的方法:子類中不能重寫的方法:getClassgetClass notifynotify notifyAllnotifyAll waitwait Object Object 及其子類及其子類37Object的clone方法 aCloneableObject aCloneableObject.clone();.clone(); /從已有的對象創(chuàng)建從已有的對象創(chuàng)建新的對象新的對象注意:注意: aCloneableObjectaCloneableObject 必須實現(xiàn)了必須實現(xiàn)了Cloneable接口接口Object.clone()是是shallow copy 而不是而不是 deep copy 38public class Stack p
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二四書店門面臨時代租及文化活動策劃合同3篇
- 2025年度大數(shù)據(jù)分析服務(wù)外包合同范本4篇
- 2025年電子產(chǎn)品銷售代理合同協(xié)議范本
- 二零二五年度品牌形象塑造與廣告宣傳一體化合同4篇
- 2025年度蔬菜配送及農(nóng)業(yè)科技研發(fā)合作合同3篇
- 二零二五版攪拌站工程勞務(wù)分包合同實施細(xì)則12篇
- Unit 4 What can you do?B read and write(說課稿)-2024-2025學(xué)年人教PEP版英語五年級上冊
- 1 負(fù)數(shù) 第二課時(說課稿)-2023-2024學(xué)年六年級下冊數(shù)學(xué)人教版
- 個體運輸商2024年承運協(xié)議標(biāo)準(zhǔn)文本版B版
- Module 3 Unit 1 What are they doing(說課稿)-2024-2025學(xué)年外研版(三起)英語四年級上冊
- GB/T 12914-2008紙和紙板抗張強度的測定
- GB/T 1185-2006光學(xué)零件表面疵病
- ps6000自動化系統(tǒng)用戶操作及問題處理培訓(xùn)
- 家庭教養(yǎng)方式問卷(含評分標(biāo)準(zhǔn))
- 城市軌道交通安全管理課件(完整版)
- 線纜包覆擠塑模設(shè)計和原理
- TSG ZF001-2006 安全閥安全技術(shù)監(jiān)察規(guī)程
- 部編版二年級語文下冊《蜘蛛開店》
- 鍋爐升降平臺管理
- 200m3╱h凈化水處理站設(shè)計方案
- 個體化健康教育記錄表格模板1
評論
0/150
提交評論