資源描述:
《《對(duì)象和類》PPT課件》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、8.1引言8.2定義對(duì)象的類8.4構(gòu)造方法8.5通過引用變量訪問對(duì)象8.6使用java中的類8.7靜態(tài)變量、常量、靜態(tài)方法8.8可見性修飾符8.9數(shù)據(jù)域封裝補(bǔ)充:不可變對(duì)象和類8.10對(duì)象引用作為參數(shù)補(bǔ)充:變量的作用域補(bǔ)充:關(guān)鍵字this8.11對(duì)象數(shù)組第8章對(duì)象和類8.1引言面向?qū)ο蟮某绦蛟O(shè)計(jì)與結(jié)構(gòu)化程序設(shè)計(jì)方法相比,OO更符合人類認(rèn)識(shí)現(xiàn)實(shí)世界的思維方式已成為程序設(shè)計(jì)的主流方向涉及的主要概念抽象封裝繼承多態(tài)第11章第8,10章所有對(duì)象的抽象,是類。類是模板。對(duì)象是類的具體實(shí)例(instance,實(shí)例化instant
2、iation)實(shí)例變量實(shí)例方法8.2定義對(duì)象的類對(duì)象的狀態(tài)status數(shù)據(jù)域?qū)傩猿蓡T變量對(duì)象的行為behavior成員方法(函數(shù))OOP8.3舉例:定義類和創(chuàng)建對(duì)象classCircle{privatedoubler;publicvoidsetR(doublex){r=x;}publicdoublegetArea(){returnMath.PI*r*r;}}classTestCircle{publicstaticvoidmain(String[]s){Circlec1=newCircle();Circlec2=new
3、Circle();c1.setR(1);c2.setR(2);System.out.println(c1.getArea());System.out.println(c2.getArea());}}8.4使用構(gòu)造方法構(gòu)造對(duì)象構(gòu)造方法一種和類同名的特殊方法用來初始化對(duì)象Java中的每個(gè)類都有構(gòu)造方法,用來初始化該類的一個(gè)新的對(duì)象沒有定義構(gòu)造方法的類,系統(tǒng)自動(dòng)提供默認(rèn)的構(gòu)造方法構(gòu)造方法的特點(diǎn)方法名與類名相同沒有返回類型,修飾符void也不能有。如果有,編譯器認(rèn)為它是普通方法,而非構(gòu)造方法通常被聲明為公有的(public)
4、可以有任意多個(gè)參數(shù)主要作用是完成對(duì)象的初始化工作不能在程序中顯式的調(diào)用在生成一個(gè)對(duì)象時(shí),系統(tǒng)會(huì)自動(dòng)調(diào)用該類的構(gòu)造方法為新生成的對(duì)象進(jìn)行初始化沒有定義構(gòu)造方法的類,系統(tǒng)自動(dòng)提供默認(rèn)的構(gòu)造方法系統(tǒng)提供的默認(rèn)構(gòu)造方法如果在類的聲明中沒有聲明任何構(gòu)造方法,則Java編譯器會(huì)提供一個(gè)默認(rèn)的構(gòu)造方法默認(rèn)的構(gòu)造方法沒有參數(shù),其方法體為空使用默認(rèn)的構(gòu)造方法初始化對(duì)象時(shí),如果在類聲明中沒有給實(shí)例變量賦初值,則對(duì)象的屬性值為零或空聲明一個(gè)銀行帳號(hào)類及測(cè)試代碼classBankAccount{StringownerName;intacco
5、untNumber=2012;floatbalance;}publicclassBankTester{publicstaticvoidmain(Stringargs[]){BankAccountmyAccount=newBankAccount();System.out.println("ownerName="+myAccount.ownerName);System.out.println("accountNumber="+myAccount.accountNumber);System.out.println("bal
6、ance="+myAccount.balance);}}運(yùn)行結(jié)果ownerName=nullaccountNumber=2012balance=0.0自定義構(gòu)造方法與方法重載可在生成對(duì)象時(shí)給構(gòu)造方法傳送初始值,使用希望的值給對(duì)象初始化構(gòu)造方法可以被重載,構(gòu)造方法的重載和方法的重載一致一個(gè)類中有兩個(gè)及以上同名的方法,但參數(shù)表不同,這種情況就被稱為方法重載。在方法調(diào)用時(shí),Java可以通過參數(shù)列表的不同來辨別應(yīng)調(diào)用哪一個(gè)方法ClassCircle{doubleradius=1.0;Circle(){}Circle(doub
7、lenewRadius){radius=newRadius;}doublegetArea(){returnradius*radius*Math.PI}}publicclassTest{publicstaticvoidmain(){Circlec=newCircle();Circled=newCircle(2.0);……}}自定義無參的構(gòu)造方法無參的構(gòu)造方法對(duì)其子類的聲明很重要。如果在一個(gè)類中不存在無參的構(gòu)造方法,則要求其子類聲明時(shí)必須聲明構(gòu)造方法,否則在子類對(duì)象的初始化時(shí)會(huì)出錯(cuò)在聲明構(gòu)造方法時(shí),好的聲明習(xí)慣是不聲明任
8、何構(gòu)造方法如果聲明,至少聲明一個(gè)無參構(gòu)造方法構(gòu)建一個(gè)Bush類,有兩個(gè)有參數(shù)的構(gòu)造方法classBush{Bush(inti){}Bush(doubled){}}如果寫:newBush();編譯器將要告訴你找不到對(duì)應(yīng)的構(gòu)造方法說明用戶在進(jìn)行類聲明時(shí),如果沒有聲明任何構(gòu)造方法,系統(tǒng)會(huì)賦給此類一個(gè)默認(rèn)(無參)的構(gòu)造方法。但是,只要用戶聲明了構(gòu)造方法