




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
導讀2023/11/181主要內(nèi)容面向?qū)ο蟮奶匦灶悩?gòu)造方法與對象的創(chuàng)建參數(shù)傳值對象的組合實例成員與類成員方法重載與多態(tài)this關(guān)鍵字包import語句,訪問權(quán)限可變參數(shù)§5.1面向?qū)ο蟮奶匦?/p>
2023/11/181面向?qū)ο缶幊讨饕w現(xiàn)下列三個特性
封裝性
繼承
多態(tài)§5.2類2023/11/181類是組成Java程序的基本要素。類封裝了一類對象的狀態(tài)和方法。類是用來定義對象的模板。類的實現(xiàn)包括兩部分:類聲明和類體?;靖袷綖椋篶lass類名{
類體的內(nèi)容}§5.2.1類聲明2023/11/181◆類聲明:class類名
如:classPeople”和“class動物”稱作類聲明;“People”和“動物”分別是類名。
◆給類命名時,遵守下列編程風格(這不是語法要求的,但應(yīng)當遵守):1.如果類名使用拉丁字母,那么名字的首字母使用大寫字母,如。2.類名最好容易識別、見名知意。當類名由幾個“單詞”復合而成時,每個單詞的首字母使用大寫。
§5.2.2類體
2023/11/181◆類聲明之后的一對大括號“{”,“}”以及它們之間的內(nèi)容稱作類體,大括號之間的內(nèi)容稱作類體的內(nèi)容。
◆類體的內(nèi)容由兩部分構(gòu):一部分是變量的聲明,用來刻畫屬性;另一部分是方法的定義,用來刻畫功能。
§5.2.3成員變量和局部變量
2023/11/181
類體中變量聲明部分所聲明的變量被稱作類的成員變量。在方法體中聲明的變量和方法的參數(shù)被稱作局部變量。
1.變量的類型:成員變量和局部變量的類型可以是Java中的任何一種數(shù)據(jù)類型,包括基本類型:整型、浮點型、字符型;引用類型:數(shù)組、對象和接口(對象和接口見后續(xù)內(nèi)容)。2.變量的有效范圍:成員變量在整個類內(nèi)都有效,局部變量只在聲明它的方法內(nèi)有效。方法參數(shù)在整個方法內(nèi)有效,方法內(nèi)的局部變量從聲明它的位置之后開始有效。3.成員變量的隱藏:如果局部變量的名字與成員變量的名字相同,則成員變量被隱藏,即這個成員變量在這個方法內(nèi)暫時失效。4.編程風格(1)一行只聲明一個變量。(2)變量的名字符合標識符規(guī)定。(3)變量名字見名知意,避免容易混淆的變量名字?!?.2.4方法
2023/11/181
方法的定義包括兩部分:方法聲明和方法體。一般格式為:方法聲明部分{方法體的內(nèi)容}
1.方法聲明
方法聲明包括方法名和方法的返回類型,如:floatarea(){…}
注:方法的返回類型、方法的參數(shù)、方法的名字
2.方法體方法聲明之后的一對大括號“{”,“}”以及之間的內(nèi)容稱作方法的方法體。方法體的內(nèi)容包括局部變量的聲明和Java語句?!?.2.5需要注意的問題
2023/11/181類體的內(nèi)容由兩部分構(gòu)成:一部分是變量的聲明,另一部分是方法的定義。
對成員變量的操作只能放在方法中,方法可以對成員變量和該方法體中聲明的局部變量進行操作。在聲明成員變量時可以同時賦予初值,但是不可以在類體中有單獨的賦值語句(不可以有變量的聲明和方法的定義以外的其它語句)。§5.2.6類的UML圖
2023/11/181
UML(UnifiedModelingLanguageDiagram)圖屬于結(jié)構(gòu)圖,常被用于描述一個系統(tǒng)的靜態(tài)結(jié)構(gòu)。一個UML中通常包含有類(Class)的UML圖,接口(Interface)的UML圖以及泛化關(guān)系(Generalization)的UML圖、關(guān)聯(lián)關(guān)系(Association)的UML圖、依賴關(guān)系(Dependency)的UML圖和實現(xiàn)關(guān)系(Realization)的UML圖。在類的UML圖中,使用一個長方形描述一個類的主要構(gòu)成,將長方形垂直地分為三層。第1層是名字層;第2層是變量層,也稱屬性層;第3層是方法層,也稱操作層?!?.3構(gòu)造方法與對象的創(chuàng)建2023/11/181
類是面向?qū)ο笳Z言中最重用的一種數(shù)據(jù)類型,那么就可以用它來聲明變量。在面向?qū)ο笳Z言中,用類聲明的變量被稱作對象。和基本數(shù)據(jù)類型不同,在用類聲明對象后,還必須要創(chuàng)建對象,即為聲明的對象分配變量(確定對象所具有的屬性),當使用一個類創(chuàng)建一個對象時,也稱給出了這個類的一個實例。通俗的講,類是創(chuàng)建對象的“模板”,沒有類就沒有對象。構(gòu)造方法和對象的創(chuàng)建密切相關(guān)?!?.3.1構(gòu)造方法
2023/11/181構(gòu)造方法是一種特殊方法,它的名字必須與它所在的類的名字完全相同,而且沒有類型。允許一個類中編寫若干個構(gòu)造方法,但必須保證他們的參數(shù)不同,即參數(shù)的個數(shù)不同,或者是參數(shù)的類型不同。需要注意的是(1)如果類中沒有編寫構(gòu)造方法,系統(tǒng)會默認該類只有一個構(gòu)造方法,該默認的構(gòu)造方法是無參數(shù)的,且方法體中沒有語句。(2)如果類里定義了一個或多個構(gòu)造方法,那么Java不提供默認的構(gòu)造方法?!?.3.2創(chuàng)建對象2023/11/1811.對象的聲明
Laderlader;2.為聲明的對象分配內(nèi)存
lader=newLader();
例1,例23.對象的內(nèi)存模型(1)聲明對象時的內(nèi)存模型(2)對象分配內(nèi)存后的內(nèi)存模型4.創(chuàng)建多個不同的對象§5.3.3使用對象
2023/11/1811.通過使用運算符“.”對象操作自己的變量(對象的屬性)2.使用運算符“.”,對象調(diào)用類中的方法(對象的功能)
例子32023/11/181下面的例子3中,主類Example5_3的main方法中使用XiyoujiRenwu創(chuàng)建兩個對象:zhubajie、sunwukong,運行效果如圖5.5?!?.3.4對象的引用和實體
2023/11/181
當用類創(chuàng)建一個對象時,類中的成員變量在分配內(nèi)存空間,這些內(nèi)存空間稱作該對象的實體或?qū)ο蟮淖兞浚鴮ο笾写娣胖?。一個類創(chuàng)建的兩個對象,如果具有相同的引用,那么就具有完全相同的實體?!?.4參數(shù)傳值
2023/11/181方法中最重要的部分之一就是方法的參數(shù),參數(shù)屬于局部變量,當對象調(diào)用方法時,參數(shù)被分配內(nèi)存空間,并要求調(diào)用者向參數(shù)專遞值,即方法被調(diào)用時,參數(shù)變量必須有具體的值?!?.4.1傳值機制
2023/11/181在Java中,方法的所有參數(shù)都是“傳值”的,也就是說,方法中參數(shù)變量的值是調(diào)用者指定的值的拷貝。例如,如果向方法的int型參數(shù)x傳遞一個int值,那么參數(shù)x得到的值是傳遞的值的拷貝?!?.4.2基本數(shù)據(jù)類型參數(shù)的傳值
2023/11/181
對于基本數(shù)據(jù)類型的參數(shù),向該參數(shù)傳遞的值的級別不可以高于該參數(shù)的級別。
例子4中有兩個源文件:Circle.java和Example5_4.java,其中Circle.java中的Circle類負責創(chuàng)建對象,Example5_4.java含有主類。在主類的main方法中使用Circle類來創(chuàng)建圓對象,該圓對象可以調(diào)用setRadius(doubler)設(shè)置自己的半徑,因此,圓對象在調(diào)用setRadius(doubler)方法時,必須向方法的參數(shù)r傳遞值。程序運行效果如圖5.8?!?.4.3引用類型參數(shù)的傳值
2023/11/181當參數(shù)是引用類型時,“傳值”傳遞的是變量中存放的“引用”,而不是變量所引用的實體。
例子52023/11/181例子5中除了使用例子4中的Circle類外,還需要一個Circlelar類(刻畫圓錐)一個主類。程序在主類Example5_4的main方法中首先使用Circlet類創(chuàng)建一個“圓”對象:circle,然后使用Circular類再創(chuàng)建一個圓錐對象circular,在創(chuàng)建圓錐circular時,需要將先前Circle類的實例:circle,即“圓”對象的引用傳遞給圓錐對象的成員變量bottom。程序運行效果如圖5.10。§5.5對象的組合
2023/11/181一個類可以把對象作為自己的成員變量,如果用這樣的類創(chuàng)建對象,那么該對象中就會有其它對象,也就是說該對象將其他對象作為自己的組成部分,或者說該對象是由幾個對象組合而成。
§5.5.1由矩形和圓組合而成的圖形
2023/11/181例子62023/11/181在下面的例6中(模擬矩形和圓組合而成的圖形),一共編寫了4個類,分成4個源文件Rectangle.java、Circle.java、Geometry.java和Example5_6.java,需要將這4個源文件分別編輯,并保存在相同的目錄中,比如C:\ch5中。運行效果如圖5.16§5.5.2關(guān)聯(lián)關(guān)系和依賴關(guān)系的UML圖
2023/11/181§5.6實例成員與類成員
§5.6.1實例變量和類變量的聲明
2023/11/181
在聲明成員變量時,用關(guān)鍵字static給予修飾的稱作類變量,否則稱作實例變量(類變量也稱為static變量,靜態(tài)變量)。§5.6.2實例變量和類變量的區(qū)別
2023/11/1811.不同對象的實例變量互不相同
2.所有對象共享類變量
3.通過類名直接訪問類變量
例子72023/11/181例子7中的Lader.java中的Lader類創(chuàng)建的梯形對象共享一個下底。主類Example5_7使用Lader類創(chuàng)建對象。程序運行效果如圖5.19?!?.6.3實例方法和類方法的定義2023/11/181
類中的方法也可分為實例方法和類方法。方法聲明時,方法類型前面不加關(guān)鍵字static修飾的是實例方法、加static關(guān)鍵字修飾的是類方法(靜態(tài)方法)。
§5.6.4實例方法和類方法的區(qū)別2023/11/181
1.對象調(diào)用實例方法當對象調(diào)用實例方法時,該方法中出現(xiàn)的實例變量就是分配給該對象的實例變量;該方法中出現(xiàn)的類變量也是分配給該對象的變量,只不過這個變量和所有的其他對象共享而已。2.類名調(diào)用類方法從而類方法不僅可以被類創(chuàng)建的任何對象調(diào)用執(zhí)行,也可以直接通過類名調(diào)用。和實例方法不同的是,類方法不可以操作實例變量,這是因為在類創(chuàng)建對象之前,實例成員變量還沒有分配內(nèi)存。
例子82023/11/181在下面的例子8中,Sum類中的getContinueSum方法是類方法。classSum{intx,y,z;staticintgetContinueSum(intstart,intend){intsum=0;for(inti=start;i<=end;i++){sum=sum+i;}returnsum;}}publicclassExample5_8{publicstaticvoidmain(Stringargs[]){intresult=Sum.getContinueSum(0,100);System.out.println(result);}}§5.7方法重載與多態(tài)2023/11/181方法重載的意思是:一個類中可以有多個方法具有相同的名字,但這些方法的參數(shù)必須不同,即或者是參數(shù)的個數(shù)不同,或者是參數(shù)的類型不同。例子92023/11/181下面例子9中People類中的computerArea方法是重載方法,另外,例子9除了People、Tixing和主類外,還用到了例子4中的Circle類以及。程序運行效果如圖5.22。§5.8this關(guān)鍵字2023/11/181this是Java的一個關(guān)鍵字,表示某個對象。this可以出現(xiàn)在實例方法和構(gòu)造方法中,但不可以出現(xiàn)在類方法中?!?.8.1在構(gòu)造方法中使用this
2023/11/181
this關(guān)鍵字出現(xiàn)在類的構(gòu)造方法中時,代表使用該構(gòu)造方法所創(chuàng)建的對象。例10例子102023/11/181例子10中,People類的構(gòu)造方法中使用了this?!?.8.2在實例方法中使用this
2023/11/181實例方法必須只能通過對象來調(diào)用,不能用類名來調(diào)用。當this關(guān)鍵字出現(xiàn)實例方法中時,代表正在調(diào)用該方法的當前對象。實例方法可以操作類的成員變量,當實例成員變量在實例方法中出現(xiàn)時,默認的格式是:this.成員變量;當static成員變量在實例方法中出現(xiàn)時,默認的格式是:類名.成員變量;§5.9包2023/11/181包是Java語言中有效地管理類的一個機制。包名的目的是有效的區(qū)分名字相同的類。不同Java源文件中兩個類名字相同時,它們可以通過隸屬不同的包來相互區(qū)分。§5.9.1包語句
2023/11/181通過關(guān)鍵字package聲明包語句。
package語句作為Java源文件的第一條語句,為該源文件中聲明的類指定包名。package語句的一般格式為:
package包名;
§5.9.2有包名的類的存儲目錄
2023/11/181程序如果使用了包語句,例如:
packagetom.jiafei;那么存儲文件的目錄結(jié)構(gòu)中必須包含有如下的結(jié)構(gòu)
…\tom\jiafei
如:c:\1000\tom\jiafei并且要將源文件編譯得到的類的字節(jié)碼文件保存在目錄c:\1000\tom\jiafei中(源文件可以任意存放)?!?.9.3運行有包名的主類2023/11/181如果主類的包名是tom.jiafei,那么主類的字節(jié)碼一定存放在…\tom\jiefei目錄中,運行時必須到tom\jiefei的上一層(即tom的父目錄)目錄中去運行主類。假設(shè)tom\jiefei的上一層目錄是1000,那么,必須如下格式來運行:C:\1000>javatom.jiafei.主類名
注:必須是:“包名.主類名”
例子112023/11/181例子11中的Student.java和Example5_11.java使用包語句。1.編譯保存上述兩個源文件保存到c:\1000\tom\jiafei中,然后進入到tom\jiafei的上一層目錄1000中編譯兩個源文件:C:\1000>javactom\jiafei\Student.javaC:\1000>javactom\jiafei\Example5_11.java也可以進入到c:\1000\tom\jiafei目錄中,使用統(tǒng)配符“*”編譯全部的源文件:C:\1000\tom\jiafei>javac*.java2.運行運行程序時必須到tom\jiafei的上一層目錄1000中來運行,如:c:\1000>javatom.jiafei.Example5_11例子11的編譯、運行效果如圖5.23?!?.10import語句2023/11/181一個類可能需要另一個類聲明的對象作為自己的成員或方法中的局部變量,如果這兩個類在同一個包中,當然沒有問題。如果一個類想要使用的那個類和它不在一個包中,要使用import語句完成使命?!?.10.1引入類庫中的類
2023/11/181如果用戶需要類庫中的類就必須使用import語句,如:
importjava.until.Date;
例子122023/11/181如果用戶編寫一個程序,并想使用java.util中的Date類創(chuàng)建對象來顯示本地的時間,那么就可以使用import語句引入java.util中的Date類。下面的例子12中的Example5_12.java使用了import語句,運行效果如圖5.24§5.10.2引入自定義包中的類
2023/11/181用戶程序可以使用tom.jiafei包中的類如:
importtom.jiafei.*;使用非類庫中有包名的類,也要使用import語句。
包名路徑左對齊。所謂包名路徑左對齊,就是讓源文件中的包名所對應(yīng)的路徑和它要用import語句引入的非類庫中的類的包名所對應(yīng)的路徑的父目錄相同。例子132023/11/181例子13中的Triangle.java含有一個Triangle類,該類可以創(chuàng)建“三角形”對象,一個需要三角形的用戶,可以使用import語句引如Triangle類。將例子13中的Triangle.java源文件保存到C:\ch5\tom\jiafei中,并編譯通過,以便使得ch5目錄下的類能使用import語句引入Triangle類。例子142023/11/181例子14中的Example5_14.java中的主類(無包名)使用import語句引如tom.jiafei包中的Triangle類,以便創(chuàng)建三角形,并計算三角形的面積。將Example5_14.java保存在C:\ch5目錄中(因為ch5下有tom\jiafei子目錄)。程序運行效果如圖5.25?!?.11訪問權(quán)限2023/11/181當用一個類創(chuàng)建了一個對象之后,該對象可以通過“.”運算符操作自己的變量、使用類中的方法,但對象操作自己的變量和使用類中的方法是有一定限制的。
§5.11.1何謂訪問權(quán)限
2023/11/181所謂訪問權(quán)限是指對象是否可以通過“.”運算符操作自己的變量或通過“.”運算符使用類中的方法。
訪問限制修飾符有private、protected和public,都是Java的關(guān)鍵字,用來修飾成員變量或方法?!?.11.2私有變量和私有方法2023/11/181用關(guān)鍵字private修飾的成員變量和方法稱為私有變量和私有方法。
對于私有成員變量或方法,只有在本類中創(chuàng)建該類的對象時,這個對象才能訪問自己的私有成員變量和類中的私有方法。
例子152023/11/181當我們用某個類在另外一個類中創(chuàng)建對象后,如果不希該對象直接訪問自己的變量,即通過“.”運算符來操作自己的成員變量,就應(yīng)當將該成員變量訪問權(quán)限設(shè)置為private。面向?qū)ο缶幊烫岢珜ο髴?yīng)當調(diào)用方法來改變自己的屬性,類應(yīng)當提供操作數(shù)據(jù)的方法,這些方法可以經(jīng)過精心的設(shè)計,使得對數(shù)據(jù)的操作更加合理,如例子15中的Student.java和Example5_15.java所示?!?.11.3共有變量和共有方法2023/11/181用public修飾的成員變量和方法被稱為共有變量和共有方法
。
我們在任何一個類中用類Tom創(chuàng)建了一個對象后,該對象能訪問自己的public變量和類中的public方法(也可以通過類名來操作成員變量、方法)。§5.11.4友好變量和友好方法2023/11/181當在另外一個類中用類Tom創(chuàng)建了一個對象后,如果這個類與Tom類在同一個包中,那么該對象能訪問自己的友好變量和友好方法。在任何一個與Tom同一包中的類中,也可以通過Tom類的類名訪問Tom類的類友好成員變量和類友好方法?!?.11.5受保護的成員變量和方法2023/11/181用protected修飾的成員變量和方法被稱為受保護的成員變量和受保護的方法?!?.11.6public類與友好類2023/11/181類聲明時,如果在關(guān)鍵字class前面加上public關(guān)鍵字,就稱這樣的類是一個public類。可以在任何另外一個類中,使用public類創(chuàng)建對象。
如果一個類不加public修飾,這樣的類被稱作友好類。在另外一個類中使用友好類創(chuàng)建對象時,要保證它們是在同一包中?!?.12基本類型的類包裝2023/11/181
Java的基本數(shù)據(jù)類型包括:byte、int、short、long、float、double、char。Java提供了基本數(shù)據(jù)類型相關(guān)的類,實現(xiàn)了對基本數(shù)據(jù)類型的封裝。這些類分別是:Byte、Integer、Short、Long、Float、Double和Character類。這些類在java.lang包中。§5.12.1Double和Float類2023/11/181
Double類和Float類實現(xiàn)了對double和float基本型數(shù)據(jù)的類包裝。Double類的構(gòu)造方法:Double(doublenum)Float類的構(gòu)造方法:Float(floatnum)Double對象調(diào)用doubleValue()方法可以返回該對象含有的double型數(shù)據(jù)。
Float對象調(diào)用floatValue()方法可以返回該對象含有的float型數(shù)據(jù)。
§5.12.2Byte、Short、Integer、Long類2023/11/181上述個類的構(gòu)造方法分別:
Byte(bytenum)Short(shortnum)Integer(intnum)Long(longnum)Byte、Short、Integer和Long對象分別調(diào)用byteValue()、shortValue()、intValue()和longValue()方法返回該對象含有的基本型數(shù)據(jù)。
§5.12.3Character類2023/11/181
Character類實現(xiàn)了對char基本型數(shù)據(jù)的類包裝。Character類的構(gòu)造方法:Character(charc)Character類中的一些常用類方法:publicstaticbooleanisDigit(charch)
如果ch是數(shù)字字符方法返回true,否則返回false。publicstaticbooleanisLetter(charch)
如果ch是字母方法返回true,否則返回false。publicstaticbooleanisLetterOrDigit(charch)
如果ch是數(shù)字字符或字母方法返回true,否則返回false。publicstaticbooleanisLowerCase(charch)
如果ch是小寫字母方法返回true,否則返回false。publicstaticbooleanisUpperCase(charch)
如果ch是大寫字母方法返回true,否則返回false。publicstaticchartoLowerCase(ch
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年03月大冶市事業(yè)單位引進急需緊缺人才20人筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 貴州省考試院2025年4月高三年級適應(yīng)性考試英語試題及答案
- 桂林電子科技大學《鍵盤和聲與即興伴奏(一)》2023-2024學年第一學期期末試卷
- 大連楓葉職業(yè)技術(shù)學院《文化人類學研究》2023-2024學年第二學期期末試卷
- 濮陽職業(yè)技術(shù)學院《食品質(zhì)量安全管理學》2023-2024學年第二學期期末試卷
- 常州大學懷德學院《5G無線工程師實訓》2023-2024學年第二學期期末試卷
- 江海職業(yè)技術(shù)學院《機場道面施工》2023-2024學年第二學期期末試卷
- 湖北大學《薄膜材料制備與表征》2023-2024學年第二學期期末試卷
- 井岡山大學《生物化學上》2023-2024學年第二學期期末試卷
- 江西農(nóng)業(yè)工程職業(yè)學院《舞蹈身體語》2023-2024學年第一學期期末試卷
- 糖尿病酮癥酸中毒患者的護理查房
- 網(wǎng)絡(luò)周期竊取演變-洞察分析
- 《excel學習講義》課件
- 醫(yī)療質(zhì)量與安全管理和持續(xù)改進評價考核標準
- 2025年湖南常德煙機公司招聘筆試參考題庫含答案解析
- 2025年中國聯(lián)通招聘筆試參考題庫含答案解析
- 2025年日歷(日程安排-可直接打印)
- 大學生職業(yè)規(guī)劃大賽《土木工程專業(yè)》生涯發(fā)展展示
- 智慧派出所綜合治理大數(shù)據(jù)平臺建設(shè)方案
- 日語N5試題完整版
- 《固定資產(chǎn)管理研究的國內(nèi)外文獻綜述》3200字
評論
0/150
提交評論