版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
java第03講-面向?qū)ο蟪绦蛟O(shè)計第一頁,共105頁。本章總體綱要類、域、方法和實(shí)例對象繼承性多態(tài)性包(package)封裝性關(guān)鍵字abstract、static、final和this接口內(nèi)部類變量作用域范圍和參數(shù)傳遞方式面向?qū)ο蟪绦蛟O(shè)計基本思想2023/4/152第二頁,共105頁。面向?qū)ο蟪绦蛟O(shè)計整體介紹面向?qū)ο蟪绦蛟O(shè)計(OOP)將數(shù)據(jù)(屬性)和方法(行為或功能)封裝到類(classes)中數(shù)據(jù)與方法常常是緊密相關(guān)的對象(objects):類的實(shí)例對象或類本身三個基本特性:封裝性、繼承性和多態(tài)性2023/4/153第三頁,共105頁。比較結(jié)構(gòu)化程序設(shè)計對應(yīng)的典型的計算機(jī)語言,例如:C面向操作(action)的函數(shù)(方法)是程序的基本單位面向?qū)ο蟪绦蛟O(shè)計對應(yīng)的典型的計算機(jī)語言,例如:Java面向?qū)ο?object)的類(class)是程序的基本單位方法(函數(shù))被封裝在類中數(shù)據(jù)也常常被封裝在類中2023/4/154第四頁,共105頁。類類(class)本身也是一種對象類(class)同時也是實(shí)例對象的模板類(class)的基本組成:(成員)域和(成員)方法
每個對象:擁有內(nèi)存存儲成員域/方法靜態(tài)的成員域/方法屬于類其它成員域/方法屬于實(shí)例對象2023/4/155第五頁,共105頁。類的定義類的定義格式如下:[類修飾詞]
class
類名
[extends
父類名][implements
接口名稱列表]{
類體}2023/4/156第六頁,共105頁。多個類組成的程序很多Java程序需要多個類完成一項任務(wù)一個文件一般只含有一個類每個文件的長度一般不要太長最長一般不要超過2000行2023/4/157第七頁,共105頁。方法定義與C++程序不同的是:每個方法都必須隸屬于某個類方法定義的格式:
[方法修飾詞]返回類型方法名(方法的參數(shù)列表)
{
方法體
}返回類型:返回數(shù)據(jù)的數(shù)據(jù)類型除了構(gòu)造方法,一般要求返回類型:要么為void
,要么為某種數(shù)據(jù)類型int、byte、float或String最多只能返回一個值方法名:任何一個合法的標(biāo)識符參數(shù)列表:用逗號(,)分隔開2023/4/158第八頁,共105頁。返回控制如果沒有值返回:return;
//退出該方法或者遇到該方法的最后一個“}”,則退出該方法如果有值返回:return
表達(dá)式;//退出該方法返回該表達(dá)式的值2023/4/159第九頁,共105頁。構(gòu)造方法構(gòu)造方法在創(chuàng)建新的實(shí)例對象時起作用構(gòu)造方法通常用來初始化實(shí)例對象,例如:初始化成員域或設(shè)置工作環(huán)境構(gòu)造方法的特點(diǎn):與類同名沒有返回值可以含有多種構(gòu)造方法(重載)但必須具有不同的參數(shù)列表2023/4/1510第十頁,共105頁。申博申博官網(wǎng)申博sunbet官網(wǎng)2023/4/15第十一頁,共105頁。默認(rèn)的構(gòu)造方法如果沒有顯式地定義類的構(gòu)造方法,則系統(tǒng)會為該類定義一個默認(rèn)的構(gòu)造方法。該構(gòu)造方法不含任何參數(shù)。這個默認(rèn)的構(gòu)造方法首先調(diào)用其父類的不含任何參數(shù)的構(gòu)造方法,然后初始化新生成的實(shí)例的各個成員域變量默認(rèn)值:基本數(shù)值類型:0;boolean:false;引用數(shù)據(jù)類型:null最好自己寫構(gòu)造方法一旦在類中定義了構(gòu)造方法,系統(tǒng)就不會再創(chuàng)建這個默認(rèn)的不含參數(shù)的構(gòu)造方法。2023/4/1512第十二頁,共105頁。父類的構(gòu)造方法每個構(gòu)造方法都必須調(diào)用其父類的構(gòu)造方法隱式調(diào)用:默認(rèn)方式(無參數(shù)的父類構(gòu)造方法)顯式調(diào)用:super(參數(shù)列表);
//可以根據(jù)需要,指定參數(shù)如果是顯式調(diào)用,則必須是第一條語句2023/4/1513第十三頁,共105頁。實(shí)例////////////////////////////////////////////////////////////編寫一個程序驗(yàn)證://父類構(gòu)造方法的調(diào)用方式//////////////////////////////////////////////////////////2023/4/1514第十四頁,共105頁。源程序//J_Test.java,byJun-HaiYongclassJ_SuperClass{J_SuperClass(){System.out.println("Enter:J_SuperClass()");}//Endofconstructor:J_SuperClass()}//Endofclass:J_SuperClassclassJ_SubClassextendsJ_SuperClass{J_SubClass(){System.out.println("Enter:J_SubClass()");}//Endofconstructor:J_SubClass()}//Endofclass:J_SubClasspublicclassJ_Test{publicstaticvoidmain(Stringargs[]){newJ_SubClass();}//Endofmethod:main}//Endofclass:J_Test2023/4/1515第十五頁,共105頁。編譯、運(yùn)行&結(jié)果2023/4/1516第十六頁,共105頁。結(jié)束(/析構(gòu))處理內(nèi)存構(gòu)造過程:當(dāng)創(chuàng)建新的實(shí)例對象時,分配內(nèi)存,并占用內(nèi)存垃圾回收(析構(gòu)過程)返回內(nèi)存給系統(tǒng)Java自動進(jìn)行這種處理當(dāng)實(shí)例對象不再被使用了,那么就會被標(biāo)記,作為垃圾回收的對象垃圾回收器在適當(dāng)?shù)臅r候回收這些內(nèi)存內(nèi)存泄露:Java比C/C++好很多,Java語言幾乎沒有2023/4/1517第十七頁,共105頁。finalize()
方法Java提供方法finalize()在java.lang.Object包中定義所有的類都有finalize()方法沒有任何方法參數(shù),也不返回任何值(void)Java調(diào)用方法finalize()的時機(jī):當(dāng)對象剛要被回收之前但不保證方法finalize()一定會被調(diào)用到一定不要依賴于方法finalize()來統(tǒng)計資源的釋放情況2023/4/1518第十八頁,共105頁。實(shí)例////////////////////////////////////////////////////////////編寫程序來驗(yàn)證://垃圾回收機(jī)制中的//finalize()//////////////////////////////////////////////////////////2023/4/1519第十九頁,共105頁。源程序//J_Finalize.java,byJun-HaiYongclassJ_Book{privateStringm_name;J_Book(Stringname){m_name=name;}//Endofconstructor:J_Book(Stringname)
publicvoidfinalize(){System.out.println("Book,\""+m_name+"\",isdestroyed!");}//Endofmethod:finalize}//Endofclass:J_BookpublicclassJ_Finalize{
publicstaticvoidmain(Stringargs[]){J_Bookbook1=newJ_Book("GonewithWind");newJ_Book("JavaHowtoProgram");//DropthereferencenewJ_Book("RomanHoliday");System.gc();//Forcegarbagecollection&finalization}//Endofmethod:main}//Endofclass:J_Finalize2023/4/1520第二十頁,共105頁。編譯、運(yùn)行&結(jié)果2023/4/1521第二十一頁,共105頁。本章總體綱要類、域、方法和實(shí)例對象繼承性多態(tài)性包(package)封裝性關(guān)鍵字abstract、static、final和this接口內(nèi)部類變量作用域范圍和參數(shù)傳遞方式面向?qū)ο蟪绦蛟O(shè)計基本思想2023/4/1522第二十二頁,共105頁。繼承性繼承性–軟件重用的一種方法根據(jù)已有的類創(chuàng)建新的類采納了舊的類的屬性(域)及其行為(方法)增加了新的能力子類繼承父類子類增加了新的成員域或新的成員方法有時可以理解成:(但不絕對!)子類對象是一種特殊的父類對象2023/4/1523第二十三頁,共105頁。繼承性的實(shí)現(xiàn)采用關(guān)鍵字extends
publicclassJ_HelloAppletextendsApplet{
//…}//類J_HelloApplet結(jié)束2023/4/1524第二十四頁,共105頁。關(guān)鍵字:instanceof運(yùn)算符:instanceof例如:if(pinstanceofCircle)上面的條件為true,當(dāng)且僅當(dāng)引用p所指向的對象是類Circle(或其子類)的實(shí)例對象2023/4/1525第二十五頁,共105頁。實(shí)例//CompareTestimportjava.awt.*;publicclassCompareTest{
publicstaticvoidmain(String[]args){Buttonb=newButton("Exit");booleancompare1=binstanceofButton;booleancompare2=binstanceofComponent;System.out.println("IsbaButton?"+compare1);System.out.println("IsbaComponent?"+compare2);}}2023/4/1526第二十六頁,共105頁。程序輸出結(jié)果IsbaButton?trueIsbaComponent?true2023/4/1527第二十七頁,共105頁。父類實(shí)例對象與子類實(shí)例對象之間的關(guān)系子類實(shí)例對象可以認(rèn)為也是其父類的實(shí)例對象反之,則不對可以配合使用這種特性與多態(tài)性主要用一個父類擁有多種子類通過父類的引用,調(diào)用子類的特定方法父類的引用指向子類的實(shí)例對象2023/4/1528第二十八頁,共105頁。隱式及顯式數(shù)據(jù)類型轉(zhuǎn)換數(shù)據(jù)類型轉(zhuǎn)換:隱式和顯式隱式:父類引用=子類對象的引用較高精度類型的變量=較低精度類型的值顯式:子類引用=(子類名)父類對象的引用較低精度類型的變量=(較低精度類型名)較高精度類型的值2023/4/1529第二十九頁,共105頁。多重繼承在有些計算機(jī)語言中,允許一個類有多個直接父類。這種繼承關(guān)系稱為多重繼承Java不支持多重繼承Java允許一個類有多個直接父接口(interface)2023/4/1530第三十頁,共105頁。本章總體綱要類、域、方法和實(shí)例對象繼承性多態(tài)性包(package)封裝性關(guān)鍵字abstract、static、final和this接口內(nèi)部類變量作用域范圍和參數(shù)傳遞方式面向?qū)ο蟪绦蛟O(shè)計基本思想2023/4/1531第三十一頁,共105頁。多態(tài)性優(yōu)點(diǎn):代碼重用簡化設(shè)計、簡化代碼便于程序擴(kuò)展2023/4/1532第三十二頁,共105頁。多態(tài)性的種類靜態(tài)的多態(tài)性重載動態(tài)的多態(tài)性覆蓋2023/4/1533第三十三頁,共105頁。靜態(tài)的多態(tài)性(重載)在編譯時就能夠被識別針對的是同一個類內(nèi)的同名方法例如:publicintsquare(intx){returnx*x;}publicdoublesquare(doublex){returnx*x;}2023/4/1534第三十四頁,共105頁。識別重載方法識別標(biāo)志:參數(shù)的個數(shù)、類型、數(shù)據(jù)類型的排列順序返回值不能做為識別的標(biāo)志2023/4/1535第三十五頁,共105頁。動態(tài)多態(tài)性(覆蓋)在程序運(yùn)行時才被識別重寫父類的方法要求相同的聲明例如:publicclassJ_HelloAppletextends
JApplet{
publicvoid
paint(Graphicsg){g.clearRect(0,0,getWidth(),getHeight());//清除背景
g.drawString("小應(yīng)用程序,您好!",10,20);}//方法paint結(jié)束}//類J_HelloApplet結(jié)束2023/4/1536第三十六頁,共105頁。源程序:J_Teacher.Java//文件名:J_Teacher.java;開發(fā)者:雍俊海classJ_Employee{
publicintm_workYear;//工作的年限
publicJ_Employee(){m_workYear=1;}//J_Employee構(gòu)造方法結(jié)束
publicvoidmb_printInfo(){System.out.println("該職工的工作年限為"+m_workYear);}//方法mb_printInfo結(jié)束}//類J_Employee結(jié)束2023/4/1537第三十七頁,共105頁。publicclassJ_TeacherextendsJ_Employee{
publicintm_classHour;//授課的課時
publicJ_Teacher(){m_classHour=96;}//J_Teacher構(gòu)造方法結(jié)束
publicvoidmb_printInfo(){System.out.println("該教師的工作年限為"+m_workYear);System.out.println("該教師授課的課時為"+m_classHour);}//方法mb_printInfo結(jié)束
publicstaticvoidmain(Stringargs[]){J_Employeea=newJ_Employee();a.mb_printInfo();a=newJ_Teacher();a.mb_printInfo();}//方法main結(jié)束}//類J_Teacher結(jié)束源程序:J_Teacher.Java2023/4/1538第三十八頁,共105頁。編譯、運(yùn)行&結(jié)果2023/4/1539第三十九頁,共105頁。本章總體綱要類、域、方法和實(shí)例對象繼承性多態(tài)性包(package)封裝性關(guān)鍵字abstract、static、final和this接口內(nèi)部類變量作用域范圍和參數(shù)傳遞方式面向?qū)ο蟪绦蛟O(shè)計基本思想2023/4/1540第四十頁,共105頁。包可以將一組相關(guān)的類或接口封裝在包(package)里,從而更好地管理已經(jīng)開發(fā)的Java代碼包含組織類與接口的目錄結(jié)構(gòu)方便程序重用2023/4/1541第四十一頁,共105頁。創(chuàng)建包創(chuàng)建public類如果類不是public,則通常只能在同一包內(nèi)使用(或派生子類)選取一個包名(package)并在源程序中增加一條package語句編譯,生成.class文件(放在相應(yīng)的目錄下)通過import語句,加入到其它程序中命名規(guī)則:Internet域名的逆序+其它名一般全部采用小寫ASCII字母例如,package
com.google.soap.search;
package
edu.cmu.cs.bovik.cheese;2023/4/1542第四十二頁,共105頁。注意事項建包的package語句必須是源程序文件的第一條語句2023/4/1543第四十三頁,共105頁。建包實(shí)例:Time1.java1//Fig.8.4:Time1.java2//Time1classdefinitioninapackage3packagecom.deitel.jhtp4.ch08;45//Javacorepackages6importjava.text.DecimalFormat;78publicclassTime1extendsObject{9
privateinthour;//0-2310
privateintminute;//0-5911
privateintsecond;//0-591213//Time1constructorinitializeseachinstancevariable14//tozero.EnsuresthateachTime1objectstartsina15//consistentstate.16
publicTime1()17{18setTime(0,0,0);19}2021//Setanewtimevalueusinguniversaltime.Perform22//validitychecksonthedata.Setinvalidvaluestozero.23
publicvoidsetTime(inth,intm,ints)24{25hour=((h>=0&&h<24)?h:0);26minute=((m>=0&&m<60)?m:0);27second=((s>=0&&s<60)?s:0);28}類Time1
被放入包中從包java.text加入類DecimalFormat類Time1
所在目錄com/deitel/jhtp4/ch082023/4/1544第四十四頁,共105頁。建包實(shí)例:Time1.java30//converttoStringinuniversal-timeformat31
publicStringtoUniversalString()32{33DecimalFormattwoDigits=newDecimalFormat("00");3435
returntwoDigits.format(hour)+":"+36twoDigits.format(minute)+":"+37twoDigits.format(second);38}3940//converttoStringinstandard-timeformat41
publicStringtoString()42{43DecimalFormattwoDigits=newDecimalFormat("00");44
45
return((hour==12||hour==0)?12:hour%12)+46
":"+twoDigits.format(minute)+47
":"+twoDigits.format(second)+48(hour<12?"AM":"PM");49}5051}//endclassTime1調(diào)用包java.text中的類DecimalFormat2023/4/1545第四十五頁,共105頁。實(shí)例:TimeTest3.java1//Fig.8.5:TimeTest3.java2//ClassTimeTest3touseimportedclassTime134//Javaextensionpackages5importjavax.swing.JOptionPane;67//Deitelpackages8importcom.deitel.jhtp4.ch08.Time1;//importTime1class910publicclassTimeTest3{1112//createanobjectofclassTime1andmanipulateit13
publicstaticvoidmain(Stringargs[])14{15Time1time=newTime1();//createTime1object1617time.setTime(13,27,06);//setnewtime18Stringoutput=19
"Universaltimeis:"+time.toUniversalString()+20
"\nStandardtimeis:"+time.toString();2122JOptionPane.showMessageDialog(null,output,23
"PackagingClassTime1forReuse",24JOptionPane.INFORMATION_MESSAGE);2526System.exit(0);27}2829}//endclassTimeTest3從包c(diǎn)om.deitel.jhtp4.ch08
加入類Time1從包javax.swing加入類JOptionPaneTimeTest3
聲明Time1
對象2023/4/1546第四十六頁,共105頁。編譯、運(yùn)行&輸出Time1.class2023/4/1547第四十七頁,共105頁。Java包Java系統(tǒng)提供了很多已經(jīng)寫好的包數(shù)學(xué)計算、輸入/輸出、字符串操作盡量利用已有的包、避免重復(fù)工作使用包中類利用import
語句指定類的位置例如:
importjavax.swing.JApplet;2023/4/1548第四十八頁,共105頁。包包java.langjava.lang.Objectjava.lang.Math包java.utiljava.util.Random2023/4/1549第四十九頁,共105頁。本章總體綱要類、域、方法和實(shí)例對象繼承性多態(tài)性包(package)封裝性關(guān)鍵字abstract、static、final和this接口內(nèi)部類變量作用域范圍和參數(shù)傳遞方式面向?qū)ο蟪绦蛟O(shè)計基本思想2023/4/1550第五十頁,共105頁。類成員的封裝性成員(域或方法)的訪問控制方式:1)public2)private3)protected4)default(缺省方式)2023/4/1551第五十一頁,共105頁。成員的訪問控制方式:public則該成員可以被任何類中的方法訪問表明對外開放的方式少量(或者沒有)public
域部分public
方法
2023/4/1552第五十二頁,共105頁。成員的訪問控制方式:private目的:隱藏具體的實(shí)現(xiàn)細(xì)節(jié)只有同一個類的成員方法才能訪問私有成員域常常是private
采用public“get”方法讀取數(shù)據(jù)采用public“set”方法寫數(shù)據(jù)2023/4/1553第五十三頁,共105頁。成員的訪問控制方式:protected介于public
和private之間同一個包內(nèi)的所有類的所有方法都能訪問該成員如果不在同一個包內(nèi)的類的方法要訪問該成員,則該類必須是該成員所在的類的子類2023/4/1554第五十四頁,共105頁。成員的訪問控制方式:default
(缺省方式)只有在同一個包內(nèi)的類的方法才能訪問該方法
2023/4/1555第五十五頁,共105頁。類成員封裝性總結(jié)2023/4/1556第五十六頁,共105頁。本章總體綱要類、域、方法和實(shí)例對象繼承性多態(tài)性包(package)封裝性關(guān)鍵字abstract、static、final接口內(nèi)部類變量作用域范圍和參數(shù)傳遞方式面向?qū)ο蟪绦蛟O(shè)計基本思想2023/4/1557第五十七頁,共105頁。abstractJava允許定義抽象(abstract)的類和方法抽象(abstract)的方法可以只提供方法的頭部,但不提供實(shí)現(xiàn)的部分抽象(abstract)的方法只能是抽象(abstract)類中的方法例如:publicabstractclassJ_VehiclepublicabstractclassJ_Shape{{publicabstractvoidfuel();publicabstractvoid
mb_draw();}}2023/4/1558第五十八頁,共105頁。關(guān)鍵字:static靜態(tài)的(static)域和靜態(tài)的(static)方法實(shí)際上隸屬于類對象靜態(tài)的(static)域示例:System.out靜態(tài)的(static)方法示例:main()示例:Math.sqrt()publicstaticdoublesqrt(doublea)2023/4/1559第五十九頁,共105頁。關(guān)鍵字:final可以修飾的對象:final
域final
方法final
類2023/4/1560第六十頁,共105頁。final
域當(dāng)一個域聲明為final時,該域就成為了常量,它的值不能再被改變實(shí)例:publicclassPhysics{privatefinalintINCREMENT=5;publicstaticfinaldoubleC=2.998E8;}
建議:域名采用大寫字母表示常量2023/4/1561第六十一頁,共105頁。final
方法當(dāng)一個方法聲明為final時,則該方法就不能被其子類中的方法覆蓋例如:publicfinalStringconvertCurrency()
2023/4/1562第六十二頁,共105頁。final
類表明不能用該類來構(gòu)造子類例如:publicfinalclass
String2023/4/1563第六十三頁,共105頁。final
參數(shù)將方法的參數(shù)聲明為final沒有意義,因?yàn)镴ava方法調(diào)用中參數(shù)的傳遞方式本身就是值傳遞方式2023/4/1564第六十四頁,共105頁。本章總體綱要類、域、方法和實(shí)例對象繼承性多態(tài)性包(package)封裝性關(guān)鍵字abstract、static、final和this接口內(nèi)部類變量作用域范圍和參數(shù)傳遞方式面向?qū)ο蟪绦蛟O(shè)計基本思想2023/4/1565第六十五頁,共105頁。接口(interface)接口(interface)就象是一種特殊的類成員方法:abstract成員域:final和static接口(interface)中所有的方法和域必須都是public的每個接口一般定義在一個.java
文件中2023/4/1566第六十六頁,共105頁。示例例1:通過接口定義一些常量publicinterfaceJ_Constants{
publicstaticfinal
intONE=1;
publicstaticfinalintTWO=2;
publicstaticfinalintTHREE=3;}//接口J_Constants結(jié)束例2:interfaceJ_Shape{
publicabstractvoidmb_draw(Graphics2Dg);}//接口J_Shape結(jié)束2023/4/1567第六十七頁,共105頁。注意事項接口中成員方法的默認(rèn)方式是public
和abstract接口中成員域的默認(rèn)方式是public、static和final2023/4/1568第六十八頁,共105頁。優(yōu)點(diǎn)一個類可以繼承多個接口例如:publicclassAextendsBimplementsC,D{}2023/4/1569第六十九頁,共105頁。本章總體綱要類、域、方法和實(shí)例對象繼承性多態(tài)性包(package)封裝性關(guān)鍵字abstract、static、final和this接口內(nèi)部類變量作用域范圍和參數(shù)傳遞方式面向?qū)ο蟪绦蛟O(shè)計基本思想2023/4/1570第七十頁,共105頁。內(nèi)部類定義在其它類內(nèi)部的類稱為內(nèi)部類內(nèi)部類有些類似于類的成員域或成員方法2023/4/1571第七十一頁,共105頁。匿名內(nèi)部類沒有類名常常用在圖形用戶界面設(shè)計(GUI)中,進(jìn)行各種事件處理例如:鼠標(biāo)事件、按鈕事件和鍵盤事件等2023/4/1572第七十二頁,共105頁。實(shí)例importjava.awt.event.*;//...jButton1.addActionListener(
newActionListener(){
publicvoidactionPerformed(ActionEvente){
//Dosomething...}});//...//Interface:java.awt.event.ActionListener//voidactionPerformed(ActionEvente)importjava.awt.event.*;classMyActionListenerimplementsActionListener{
publicvoidactionPerformed(ActionEvente){
//Dosomething...}}//////////////////////////////////////////////////////////////////...jButton1.addActionListener(
newMyActionListener());...2023/4/1573第七十三頁,共105頁。本章總體綱要類、域、方法和實(shí)例對象繼承性多態(tài)性包(package)封裝性關(guān)鍵字abstract、static、final和this接口內(nèi)部類變量作用域范圍和參數(shù)傳遞方式面向?qū)ο蟪绦蛟O(shè)計基本思想2023/4/1574第七十四頁,共105頁。變量的作用域范圍作用域范圍:程序中能夠使用該變量(域與局部變量)的范圍分類:類作用域范圍和塊作用域范圍2023/4/1575第七十五頁,共105頁。類作用域范圍從類定義的第一個“{”開始,到最后一個“}”結(jié)束超出類的范圍,類的成員方法不能直接通過它的名稱進(jìn)行訪問例如:成員域2023/4/1576第七十六頁,共105頁。塊作用域范圍從變量聲明之處,到該塊的最后一個“}”例如:局部變量與成員方法的參數(shù)2023/4/1577第七十七頁,共105頁。值傳遞示例////////////////////////////////////////////////////////////編寫一個程序用來說明//Java方法調(diào)用過程中//值傳遞方式//////////////////////////////////////////////////////////2023/4/1578第七十八頁,共105頁。源程序//文件名:J_Primitive.java;開發(fā)者:雍俊海publicclassJ_Primitive{
publicstaticvoidmb_method(inta){System.out.println("在a++之前方法參數(shù)a="+a);a++;System.out.println("在a++之后方法參數(shù)a="+a);}//方法mb_method結(jié)束
publicstaticvoidmain(Stringargs[]){inti=0;System.out.println("在方法調(diào)用之前變量i="+i);mb_method(i);System.out.println("在方法調(diào)用之后變量i="+i);}//方法main結(jié)束}//類J_Primitive結(jié)束2023/4/1579第七十九頁,共105頁。編譯、運(yùn)行&結(jié)果編譯命令為:javacJ_Primitive.java執(zhí)行命令為:javaJ_Primitive最后執(zhí)行的結(jié)果為:在方法調(diào)用之前變量i=0在a++之前方法參數(shù)a=0在a++之后方法參數(shù)a=1在方法調(diào)用之后變量i=02023/4/1580第八十頁,共105頁。引用數(shù)據(jù)類型值傳遞實(shí)例////////////////////////////////////////////////////////////編寫一個程序用來說明//Java方法調(diào)用過程中//引用數(shù)據(jù)類型值傳遞方式//////////////////////////////////////////////////////////2023/4/1581第八十一頁,共105頁。源程序/////////////////////////////////////////////////////////////J_Test.java////CreatedbyJun-HaiYong,onXXxx,xxxx(Date)//////////////////////////////////////////////////////////Readme://Thisprogramdemonstrates://modifyinganobject,whichisanargument.classJ_Class{
publicintm_field;J_Class(){m_field=0;}//Endofmethod:J_Class}//Endofclass:J_Class2023/4/1582第八十二頁,共105頁。源程序publicclassJ_Test{
publicstaticvoidmb_test(J_Classc){System.out.println(“[T]Before:c.m_field="+c.m_field);c.m_field++;System.out.println(“[T]After:c.m_field="+c.m_field);}//Endofmethod:mb_test
publicstaticvoidmain(Stringargs[]){J_Classc=newJ_Class();System.out.println(“[M]Before:c.m_field="+c.m_field);mb_test(c);System.out.println(“[M]After:c.m_field="+c.m_field);}//Endofmethod:main}//Endofclass:J_Test2023/4/1583第八十三頁,共105頁。編譯、運(yùn)行&結(jié)果編譯命令為:javacJ_Test.java執(zhí)行命令為:javaJ_Test最后執(zhí)行的結(jié)果為:[M]Before:c.m_field=0[T]Before:c.m_field=0[T]After:c.m_field=1[M]After:c.m_field=12023/4/1584第八十四頁,共105頁。本章總體綱要類、域、方法和實(shí)例對象繼承性多態(tài)性包(package)封裝性關(guān)鍵字abstract、static、final和this接口內(nèi)部類變量作用域范圍和參數(shù)傳遞方式面向?qū)ο蟪绦蛟O(shè)計基本思想2023/4/1585第八十五頁,共105頁。示例////////////////////////////////////////////////////////////編寫一個程序用來說明//求解矩形和圓面積//////////////////////////////////////////////////////////2023/4/1586第八十六頁,共105頁。按對象進(jìn)行分解編寫文件J_Shape.java,實(shí)現(xiàn)接口J_Shape編寫文件J_Circle.java,實(shí)現(xiàn)類J_Circle繼承自接口J_Shape編寫文件J_Rectangle.java,實(shí)現(xiàn)類J_Rectangle繼承自接口J_Shape編寫文件J_Area.java,實(shí)現(xiàn)類J_Area計算矩形和圓面積利用類J_Circle和類J_Rectangle2023/4/1587第八十七頁,共105頁。源程序:J_Shape.java//文件名:J_Shape.java;開發(fā)者:雍俊海publicinterfaceJ_Shape{
//計算并返回形狀的面積
publicabstractdoublemb_getArea();}//接口J_Shape結(jié)束2023/4/1588第八十八頁,共105頁。源程序:J_Circle.java//文件名:J_Circle.java;開發(fā)者:雍俊海(待續(xù))publicclassJ_CircleimplementsJ_Shape{
publicdoublem_x,m_y;//圓心坐標(biāo)
publicdoublem_radius;//半徑
publicJ_Circle(doubler){m_x=0;m_y=0;m_radius=r;}//J_Circle構(gòu)造方法結(jié)束2023/4/1589第八十九頁,共105頁。源程序:J_Circle.java//文件名:J_Circle.java;開發(fā)者:雍俊海(續(xù))
publicJ_Circle(doublex,doubley,doubler){m_x=x;m_y=y;m_radius=r;}//J_Circle構(gòu)造方法結(jié)束
//計算并返回形狀的面積
publicdoublemb_getArea(){
return(Math.PI*m_radius*m_radius);}//方法mb_getArea結(jié)束}//類J_Circle結(jié)束2023/4/1590第九十頁,共105頁。源程序:J_Rectangle.java//文件名:J_Rectangle.java;開發(fā)者:雍俊海(待續(xù))publicclassJ_RectangleimplementsJ_Shape{
publicdoublem_minX,m_minY;//第一個角點(diǎn)坐標(biāo)
publicdoublem_maxX,m_maxY;//另一個角點(diǎn)坐標(biāo)
publicJ_Rectangle(doublex1,doubley1,doublex2,doubley2){if(x1<x2){m_minX=x1;m_maxX=x2;}else{m_minX=x2;
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 鑄造碳化鎢制管工崗前沖突管理考核試卷含答案
- 鐵合金焙燒操作工安全管理測試考核試卷含答案
- 2025內(nèi)蒙古自治區(qū)公務(wù)員考試數(shù)量關(guān)系專項練習(xí)題完整參考答案
- 耐蝕混凝土工創(chuàng)新意識測試考核試卷含答案
- 營銷員崗前流程優(yōu)化考核試卷含答案
- 農(nóng)機(jī)駕駛操作員誠信道德能力考核試卷含答案
- 廢礦物油再生處置工安全應(yīng)急評優(yōu)考核試卷含答案
- 2024年湖南交通工程學(xué)院輔導(dǎo)員考試筆試題庫附答案
- 2024年湖北師范大學(xué)輔導(dǎo)員考試筆試真題匯編附答案
- 2024年遼寧地質(zhì)工程職業(yè)學(xué)院輔導(dǎo)員考試參考題庫附答案
- 2026年廣東粵海水務(wù)股份有限公司招聘備考題庫及一套答案詳解
- 中西醫(yī)結(jié)合治療慢性病康復(fù)優(yōu)勢
- 診所醫(yī)生營銷培訓(xùn)課件
- 一節(jié)課說課模板課件
- 河道清潔員安全培訓(xùn)課件
- 2026年鐘山職業(yè)技術(shù)學(xué)院高職單招職業(yè)適應(yīng)性測試備考試題帶答案解析
- 上海市普陀區(qū)2025-2026學(xué)年八年級上學(xué)期期中語文試題(含答案)
- 人教版(2024)八年級上冊英語期末復(fù)習(xí):各單元語法精講+練習(xí)題(無答案)
- 水土流失綜合治理工程項目可行性報告
- 美的空調(diào)使用培訓(xùn)
- 安利價值遠(yuǎn)景課件
評論
0/150
提交評論