java語(yǔ)言程序設(shè)計(jì)基礎(chǔ)篇(第八版)課件第06章對(duì)象和類(lèi)_第1頁(yè)
java語(yǔ)言程序設(shè)計(jì)基礎(chǔ)篇(第八版)課件第06章對(duì)象和類(lèi)_第2頁(yè)
java語(yǔ)言程序設(shè)計(jì)基礎(chǔ)篇(第八版)課件第06章對(duì)象和類(lèi)_第3頁(yè)
java語(yǔ)言程序設(shè)計(jì)基礎(chǔ)篇(第八版)課件第06章對(duì)象和類(lèi)_第4頁(yè)
java語(yǔ)言程序設(shè)計(jì)基礎(chǔ)篇(第八版)課件第06章對(duì)象和類(lèi)_第5頁(yè)
已閱讀5頁(yè),還剩85頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

Java程序設(shè)計(jì)第6章對(duì)象和類(lèi)1Java程序設(shè)計(jì)第6章對(duì)象和類(lèi)1學(xué)習(xí)目標(biāo)1.理解對(duì)象和類(lèi)的基本概念,能定義類(lèi)并能創(chuàng)建類(lèi)的對(duì)象;理解構(gòu)造方法的作用,能使用構(gòu)造方法創(chuàng)建類(lèi)的對(duì)象。2.掌握使用Java類(lèi)庫(kù)中類(lèi)的方法。3.理解類(lèi)的封裝。4.初步掌握面向?qū)ο蟪绦蛟O(shè)計(jì)。2學(xué)習(xí)目標(biāo)1.理解對(duì)象和類(lèi)的基本概念,能定義類(lèi)并能創(chuàng)建類(lèi)的對(duì)內(nèi)容摘要6.1引言6.2對(duì)象和類(lèi)6.3使用構(gòu)造方法創(chuàng)建對(duì)象6.4通過(guò)引用變量來(lái)訪問(wèn)對(duì)象6.5使用Java類(lèi)庫(kù)中的類(lèi)6.6可見(jiàn)性修飾符、訪問(wèn)器和修改器6.7數(shù)據(jù)域的封裝3內(nèi)容摘要6.1引言3內(nèi)容摘要6.8永久對(duì)象和類(lèi)6.9給方法傳遞對(duì)象參數(shù)6.10靜態(tài)變量、常量和靜態(tài)方法6.11變量的作用域6.12關(guān)鍵字this6.13對(duì)象數(shù)組4內(nèi)容摘要6.8永久對(duì)象和類(lèi)4內(nèi)容摘要6.1引言6.2對(duì)象和類(lèi)6.3使用構(gòu)造方法創(chuàng)建對(duì)象6.4通過(guò)引用變量來(lái)訪問(wèn)對(duì)象6.5使用Java類(lèi)庫(kù)中的類(lèi)6.6可見(jiàn)性修飾符、訪問(wèn)器和修改器6.7數(shù)據(jù)域的封裝5內(nèi)容摘要6.1引言56.1引言以往我們學(xué)過(guò)C語(yǔ)言程序設(shè)計(jì),它需要選擇數(shù)據(jù)結(jié)構(gòu)、設(shè)計(jì)算法,然后再把算法用C語(yǔ)言編寫(xiě)出來(lái)。這種編程方法就是所謂的面向過(guò)程程序設(shè)計(jì),支持這種方法的語(yǔ)言如C語(yǔ)言則稱(chēng)為面向過(guò)程語(yǔ)言。像Java等所謂的面向?qū)ο笳Z(yǔ)言不僅仍然具有面向過(guò)程語(yǔ)言的特點(diǎn),而且通過(guò)類(lèi)的封裝、繼承和多態(tài)性增加了靈活性、模塊性、清晰性和可重用性等有益特性。66.1引言以往我們學(xué)過(guò)C語(yǔ)言程序設(shè)計(jì),它需要選擇數(shù)據(jù)結(jié)構(gòu)6.1引言在面向過(guò)程程序設(shè)計(jì)中,數(shù)據(jù)和對(duì)數(shù)據(jù)的操作是分離的,因而這種作法需要把數(shù)據(jù)傳遞到函數(shù)和過(guò)程中。而在面向?qū)ο蟪绦蛟O(shè)計(jì)中,把數(shù)據(jù)和屬于它的操作放入一個(gè)所謂的對(duì)象(object)的整體中,這樣做解決了面向過(guò)程程序設(shè)計(jì)中不可避免的許多問(wèn)題。面向?qū)ο蟪绦蛟O(shè)計(jì)是一種更貼近真實(shí)世界的模型組織程序;使用對(duì)象可以改進(jìn)軟件的可重用性,使程序更易于開(kāi)發(fā)和維護(hù)。76.1引言在面向過(guò)程程序設(shè)計(jì)中,數(shù)據(jù)和對(duì)數(shù)據(jù)的操作是分離6.1引言Java程序可以看作是相互合作的對(duì)象所構(gòu)成的集中。本章介紹面向?qū)ο蟪绦蛟O(shè)計(jì)的基本知識(shí):聲明類(lèi)、創(chuàng)建對(duì)象、處理對(duì)象以及組織對(duì)象協(xié)調(diào)工作。86.1引言Java程序可以看作是相互合作的對(duì)象所構(gòu)成的集內(nèi)容摘要6.1引言6.2對(duì)象和類(lèi)6.3使用構(gòu)造方法創(chuàng)建對(duì)象6.4通過(guò)引用變量來(lái)訪問(wèn)對(duì)象6.5使用Java類(lèi)庫(kù)中的類(lèi)6.6可見(jiàn)性修飾符、訪問(wèn)器和修改器6.7數(shù)據(jù)域的封裝9內(nèi)容摘要6.1引言96.2對(duì)象和類(lèi)對(duì)象(object)代表現(xiàn)實(shí)世界中可以明確標(biāo)識(shí)的一個(gè)事物。例如,一個(gè)學(xué)生,一張桌子,一個(gè)圓,一個(gè)銨鈕甚至一筆貸款都可以看作一個(gè)對(duì)象。對(duì)象有自己獨(dú)有的特性、狀態(tài)和行為。對(duì)象的狀態(tài)是由具有當(dāng)前值的數(shù)據(jù)域的集合構(gòu)成;對(duì)象的行為是由方法的集合定義的。圖6-1(a)描述了一個(gè)一般對(duì)象與它的數(shù)據(jù)域和方法。調(diào)用對(duì)象的一個(gè)方法就是要求對(duì)象執(zhí)行一項(xiàng)任務(wù)。例如,Circle對(duì)象具有數(shù)據(jù)域radius,它是106.2對(duì)象和類(lèi)對(duì)象(object)代表現(xiàn)實(shí)世界中可以明確標(biāo)6.2對(duì)象和類(lèi)圓的特征屬性。圓的一個(gè)行為是使用findArea()方法計(jì)算它的面積。如圖6-1(b)所示116.2對(duì)象和類(lèi)圓的特征屬性。圓的一個(gè)行為是使用findAr6.2對(duì)象和類(lèi)類(lèi)(class)是定義同一類(lèi)型對(duì)象的結(jié)構(gòu)。在Java的類(lèi)中,數(shù)據(jù)用來(lái)描述屬性,方法用來(lái)定義行為。此外,還提供一個(gè)特殊的方法,稱(chēng)為構(gòu)造方法(constructor),調(diào)用它可以創(chuàng)建類(lèi)的對(duì)象。構(gòu)造方法很象一般的方法,可以執(zhí)行任何操作,但是設(shè)計(jì)構(gòu)造方法是為了進(jìn)行初始化操作。例如,初始化對(duì)象的數(shù)據(jù)域。圖6-2顯示了Circle對(duì)象的類(lèi)的例子。126.2對(duì)象和類(lèi)類(lèi)(class)是定義同一類(lèi)型對(duì)象的結(jié)構(gòu)。在6.2對(duì)象和類(lèi)136.2對(duì)象和類(lèi)136.2對(duì)象和類(lèi)注意1:Circle類(lèi)與目前所見(jiàn)過(guò)的所有其他類(lèi)不同。它沒(méi)有main方法,因此,不能運(yùn)行,它僅僅是一個(gè)用于聲明和創(chuàng)建Circle對(duì)象的定義。注意2:Circle類(lèi)中定義了2個(gè)構(gòu)造方法,第一個(gè)沒(méi)有參數(shù),這種沒(méi)有參數(shù)的構(gòu)造方法稱(chēng)為無(wú)參構(gòu)造方法。146.2對(duì)象和類(lèi)注意1:Circle類(lèi)與目前所見(jiàn)過(guò)的所有其他內(nèi)容摘要6.1引言6.2對(duì)象和類(lèi)6.3使用構(gòu)造方法創(chuàng)建對(duì)象

6.4通過(guò)引用變量來(lái)訪問(wèn)對(duì)象6.5使用Java類(lèi)庫(kù)中的類(lèi)6.6可見(jiàn)性修飾符、訪問(wèn)器和修改器6.7數(shù)據(jù)域的封裝15內(nèi)容摘要6.1引言156.3使用構(gòu)造方法創(chuàng)建對(duì)象構(gòu)造方法必須與定義它的類(lèi)有完全的名字。和所有方法一樣,構(gòu)造方法可以被重載,從而更易于用不同的初始數(shù)據(jù)值來(lái)構(gòu)造對(duì)象。在類(lèi)中創(chuàng)建一個(gè)對(duì)象,使用new操作符調(diào)用構(gòu)造方法,如:nesw<類(lèi)名>(參數(shù));例如,newCircle()調(diào)Circle類(lèi)中第一個(gè)構(gòu)造方法,創(chuàng)建一個(gè)Circle對(duì)象;newCircle(5)調(diào)Circle類(lèi)中第二個(gè)構(gòu)造方法,創(chuàng)建一個(gè)Circle對(duì)象,該對(duì)象半徑為5。166.3使用構(gòu)造方法創(chuàng)建對(duì)象構(gòu)造方法必須與定義它的類(lèi)有完全的6.3使用構(gòu)造方法創(chuàng)建對(duì)象一個(gè)類(lèi)不聲明構(gòu)造方法,在這種情況下,類(lèi)中隱含地聲明了一個(gè)方法體為空的無(wú)參構(gòu)造方法。注意,構(gòu)造方法是一種特殊方法,與一般方法有三點(diǎn)不同:1)構(gòu)造方法必須與所在類(lèi)具有相同的名字;2)構(gòu)造方法沒(méi)有返回類(lèi)型,甚至連void也沒(méi)有;3)構(gòu)造方法的調(diào)用是在創(chuàng)建一個(gè)對(duì)象時(shí)使用new操作符進(jìn)行的;構(gòu)造方法的作用是初始化對(duì)象。176.3使用構(gòu)造方法創(chuàng)建對(duì)象一個(gè)類(lèi)不聲明構(gòu)造方法,在這種情況內(nèi)容摘要6.1引言6.2對(duì)象和類(lèi)6.3使用構(gòu)造方法創(chuàng)建對(duì)象6.4通過(guò)引用變量來(lái)訪問(wèn)對(duì)象6.5使用Java類(lèi)庫(kù)中的類(lèi)6.6可見(jiàn)性修飾符、訪問(wèn)器和修改器6.7數(shù)據(jù)域的封裝18內(nèi)容摘要6.1引言186.4通過(guò)引用變量來(lái)訪問(wèn)對(duì)象新創(chuàng)建的對(duì)象在內(nèi)存中占用空間,那么它們是如何被訪問(wèn)呢?196.4通過(guò)引用變量來(lái)訪問(wèn)對(duì)象新創(chuàng)建的對(duì)象在內(nèi)存中占用空間,6.4.1引用變量和引用類(lèi)型對(duì)象通過(guò)引用變量來(lái)訪問(wèn),該變量包含對(duì)象的引用地址,使用如下語(yǔ)法格式不說(shuō)明:<類(lèi)名><對(duì)象引用變量名>;一個(gè)類(lèi)所定義的類(lèi)型被稱(chēng)為引用類(lèi)型。任何類(lèi)型為類(lèi)的變量都能引用該類(lèi)的一個(gè)實(shí)例。例:CirclemyCircle;myCircle=newCircle();206.4.1引用變量和引用類(lèi)型對(duì)象通過(guò)引用變量來(lái)訪問(wèn),該變量6.4.1引用變量和引用類(lèi)型定義引用變量和創(chuàng)建一個(gè)對(duì)象并使用引用變量指向該對(duì)象可以合并為一句來(lái)完成,其格式為:<類(lèi)名><對(duì)象引用變量名>=new<類(lèi)名>(<參數(shù)表>);例如:CirclemyCircle=newCircle();216.4.1引用變量和引用類(lèi)型定義引用變量和創(chuàng)建一個(gè)對(duì)象并使6.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法當(dāng)一個(gè)對(duì)象被創(chuàng)建后,可以通過(guò)它的引用變量來(lái)訪問(wèn),其語(yǔ)法格式為:<對(duì)象引用變量名>.<數(shù)據(jù)名>;<對(duì)象引用變量名>.<方法名>(<參數(shù)表>);例如:CirclemyCircle=newCircle();myCircle.radius=9;myCircle.findArea();226.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法當(dāng)一個(gè)對(duì)象被創(chuàng)建后,可以通過(guò)6.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法例6.1聲明類(lèi)并創(chuàng)建對(duì)象。問(wèn)題:編寫(xiě)程序,構(gòu)造半徑為5和為半徑為1的圓對(duì)象,并顯示這兩個(gè)圓的半徑和面積;再將第2個(gè)對(duì)象的半徑改為100,顯示其新的半徑和面積。解答:236.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法例6.1聲明類(lèi)并創(chuàng)建對(duì)象。6.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法classSimpleCircle{doubleradius;/**構(gòu)造一個(gè)其半徑為1的圓對(duì)象*/

SimpleCircle(){radius=1.0;}/**構(gòu)造一個(gè)由參數(shù)指定半徑的圓對(duì)象*/246.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法classSimpleCi6.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法SimpleCircle(doublenewRadius){radius=newRadius;}doublefindArea(){returnradius*radius*3.14159;}}/**類(lèi)定義結(jié)束*/256.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法SimpleCircl6.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法這個(gè)類(lèi)不是主類(lèi),不能運(yùn)行,那么如何使用呢?回答是:在主類(lèi)中使用。使用上述類(lèi)的主類(lèi)如下:publicclassTestSimpleCircle{publicstaticvoidmain(String[]args){//創(chuàng)建一個(gè)半徑為5的圓對(duì)象SimpleCirclemyCircle;myCircle=newSimpleCircle(5);266.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法這個(gè)類(lèi)不是主類(lèi),不能運(yùn)行,那6.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法//創(chuàng)建一個(gè)半徑為1的圓對(duì)象SimpleCircleyourCircle;yourCircle=newSimpleCircle();System.out.println(“其半徑為”+myCircle.radius+“的圓面積為”+myCircle.findArea());System.out.println(“其半徑為”+yourCircle.radius+“的圓面積為”+yourCircle.findArea());276.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法//創(chuàng)建一個(gè)半徑為16.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法//修改圓半徑y(tǒng)ourCircle.radius=100;System.out.println(“其半徑為”+yourCircle.radius+“的圓面積為”+yourCircle.findArea());}}286.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法//修改圓半徑286.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法這兩個(gè)類(lèi)可以放在同一個(gè)文件中。下面我們來(lái)運(yùn)行這個(gè)例子。(運(yùn)行)296.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法這兩個(gè)類(lèi)可以放在同一個(gè)文件中6.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法注意1:可以把兩個(gè)類(lèi)放在同一個(gè)文件中,但一個(gè)文件中只能有一個(gè)public類(lèi),并且public類(lèi)必須與文件名相同。注意2:上述兩個(gè)類(lèi)可以合并為一個(gè):publicclassSimpleCircle{publicstaticvoidmain(String[]args){//創(chuàng)建一個(gè)半徑為5的圓對(duì)象SimpleCirclemyCircle;myCircle=newSimpleCircle(5);//創(chuàng)建一個(gè)半徑為1的圓對(duì)象306.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法注意1:可以把兩個(gè)類(lèi)放在同一6.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法SimpleCircleyourCircle;yourCircle=newSimpleCircle();System.out.println("其半徑為"+myCircle.radius+"的圓面積為"+myCircle.findArea());System.out.println("其半徑為"+yourCircle.radius+"的圓面積為"+yourCircle.findArea());//修改圓半徑y(tǒng)ourCircle.radius=100;316.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法SimpleCirc6.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法System.out.println("其半徑為"+yourCircle.radius+"的圓面積為"+yourCircle.findArea());}doubleradius;/**構(gòu)造一個(gè)其半徑為1的圓對(duì)象*/SimpleCircle(){radius=1.0;}326.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法System.out6.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法/**構(gòu)造一個(gè)由參數(shù)指定半徑的圓對(duì)象*/SimpleCircle(doublenewRadius){radius=newRadius;}doublefindArea(){returnradius*radius*3.14159;}}336.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法/**構(gòu)造一個(gè)由參數(shù)指6.4.3空值null如果一個(gè)引用型變量沒(méi)有引用任何對(duì)象,這個(gè)對(duì)象就有一個(gè)特別的Java值null。null與true和false一樣是一個(gè)直接量。true和false用于boolean型變量,而null用于引用型變量。引用型數(shù)據(jù)的默認(rèn)值是null,數(shù)值型的默認(rèn)值是0,boolean型的默認(rèn)值是false,char型的默認(rèn)值為’\u0000’。然而,Java沒(méi)有給方法中的局部變量賦予默認(rèn)值,下面代碼顯示Student對(duì)象中數(shù)據(jù)域name、age、isScienceMajor和gender346.4.3空值null如果一個(gè)引用型變量沒(méi)有引用任何對(duì)象,6.4.3空值null的缺省值:classStudent{Stringname;//默認(rèn)值為nullintage;//默認(rèn)值為0booleanisScienceMajor;//默認(rèn)值為falsechargender;//默認(rèn)值為’\u0000’publicstaticvoidmain(String[]args){Studentstudent=newStudent();System.out.println(“name=”+);System.out.println(“age=”+student.age);356.4.3空值null的缺省值:356.4.3空值nullSystem.out.println(“isScienceMajor=”+student.isScienceMajor);System.out.println(“gender=”+student.gender);}}而下面的代碼是錯(cuò)的:366.4.3空值nullSystem.out.pri6.4.3空值nullclassTest{intx;//x沒(méi)有默認(rèn)值Stringy;//y沒(méi)有默認(rèn)值System.out.println(“x是”+x);System.out.println(“y是”+y);}376.4.3空值nullclassTest{376.4.4基本數(shù)據(jù)類(lèi)型變量與引用型變量的區(qū)別一個(gè)基本數(shù)據(jù)類(lèi)型變量存放基本數(shù)據(jù)類(lèi)型的值,而一個(gè)對(duì)象引用型變量存放指向?qū)ο笤趦?nèi)存中存儲(chǔ)位置的引用;386.4.4基本數(shù)據(jù)類(lèi)型變量與引用型變量的區(qū)別一個(gè)基本數(shù)據(jù)類(lèi)6.4.4基本數(shù)據(jù)類(lèi)型變量與引用型變量的區(qū)別396.4.4基本數(shù)據(jù)類(lèi)型變量與引用型變量的區(qū)別396.4.4基本數(shù)據(jù)類(lèi)型變量與引用型變量的區(qū)別將一個(gè)引用變量復(fù)制到另一個(gè)引用變量而不是復(fù)制對(duì)象,它僅僅將一個(gè)對(duì)象的引用值賦值給另一個(gè)變量。406.4.4基本數(shù)據(jù)類(lèi)型變量與引用型變量的區(qū)別將一個(gè)引用變量6.4.4基本數(shù)據(jù)類(lèi)型變量與引用型變量的區(qū)別416.4.4基本數(shù)據(jù)類(lèi)型變量與引用型變量的區(qū)別41內(nèi)容摘要6.1引言6.2對(duì)象和類(lèi)6.3使用構(gòu)造方法創(chuàng)建對(duì)象6.4通過(guò)引用變量來(lái)訪問(wèn)對(duì)象6.5使用Java類(lèi)庫(kù)中的類(lèi)6.6可見(jiàn)性修飾符、訪問(wèn)器和修改器6.7數(shù)據(jù)域的封裝42內(nèi)容摘要6.1引言426.5使用Java類(lèi)庫(kù)中的類(lèi)前面我們講過(guò),Java類(lèi)庫(kù)是系統(tǒng)提供的供我們使用的預(yù)先定義類(lèi)的集合。以后的教學(xué)中我們會(huì)經(jīng)常使用。當(dāng)編寫(xiě)程序創(chuàng)建圖形用戶界面時(shí),將會(huì)使用Java的類(lèi)創(chuàng)建窗體、按鈕、單選按鈕、組合框、列表框等。下在的例子程序創(chuàng)建了兩個(gè)窗體:436.5使用Java類(lèi)庫(kù)中的類(lèi)前面我們講過(guò),Java類(lèi)庫(kù)是系6.5使用Java類(lèi)庫(kù)中的類(lèi)importjavax.swing.JFrame;publicclassTestFrame{publicstaticvoidmain(String[]args){JFrameframe1=newJFrame();frame1.setTitle("窗口1");frame1.setSize(200,150);frame1.setLocation(200,100);frame1.setVisible(true);446.5使用Java類(lèi)庫(kù)中的類(lèi)importjavax.sw6.5使用Java類(lèi)庫(kù)中的類(lèi)JFrameframe2=newJFrame();frame2.setTitle("窗口2");frame2.setSize(200,150);frame2.setLocation(410,100);frame2.setVisible(true);}}456.5使用Java類(lèi)庫(kù)中的類(lèi)JFrameframJava程序設(shè)計(jì)第6章對(duì)象和類(lèi)46Java程序設(shè)計(jì)第6章對(duì)象和類(lèi)1學(xué)習(xí)目標(biāo)1.理解對(duì)象和類(lèi)的基本概念,能定義類(lèi)并能創(chuàng)建類(lèi)的對(duì)象;理解構(gòu)造方法的作用,能使用構(gòu)造方法創(chuàng)建類(lèi)的對(duì)象。2.掌握使用Java類(lèi)庫(kù)中類(lèi)的方法。3.理解類(lèi)的封裝。4.初步掌握面向?qū)ο蟪绦蛟O(shè)計(jì)。47學(xué)習(xí)目標(biāo)1.理解對(duì)象和類(lèi)的基本概念,能定義類(lèi)并能創(chuàng)建類(lèi)的對(duì)內(nèi)容摘要6.1引言6.2對(duì)象和類(lèi)6.3使用構(gòu)造方法創(chuàng)建對(duì)象6.4通過(guò)引用變量來(lái)訪問(wèn)對(duì)象6.5使用Java類(lèi)庫(kù)中的類(lèi)6.6可見(jiàn)性修飾符、訪問(wèn)器和修改器6.7數(shù)據(jù)域的封裝48內(nèi)容摘要6.1引言3內(nèi)容摘要6.8永久對(duì)象和類(lèi)6.9給方法傳遞對(duì)象參數(shù)6.10靜態(tài)變量、常量和靜態(tài)方法6.11變量的作用域6.12關(guān)鍵字this6.13對(duì)象數(shù)組49內(nèi)容摘要6.8永久對(duì)象和類(lèi)4內(nèi)容摘要6.1引言6.2對(duì)象和類(lèi)6.3使用構(gòu)造方法創(chuàng)建對(duì)象6.4通過(guò)引用變量來(lái)訪問(wèn)對(duì)象6.5使用Java類(lèi)庫(kù)中的類(lèi)6.6可見(jiàn)性修飾符、訪問(wèn)器和修改器6.7數(shù)據(jù)域的封裝50內(nèi)容摘要6.1引言56.1引言以往我們學(xué)過(guò)C語(yǔ)言程序設(shè)計(jì),它需要選擇數(shù)據(jù)結(jié)構(gòu)、設(shè)計(jì)算法,然后再把算法用C語(yǔ)言編寫(xiě)出來(lái)。這種編程方法就是所謂的面向過(guò)程程序設(shè)計(jì),支持這種方法的語(yǔ)言如C語(yǔ)言則稱(chēng)為面向過(guò)程語(yǔ)言。像Java等所謂的面向?qū)ο笳Z(yǔ)言不僅仍然具有面向過(guò)程語(yǔ)言的特點(diǎn),而且通過(guò)類(lèi)的封裝、繼承和多態(tài)性增加了靈活性、模塊性、清晰性和可重用性等有益特性。516.1引言以往我們學(xué)過(guò)C語(yǔ)言程序設(shè)計(jì),它需要選擇數(shù)據(jù)結(jié)構(gòu)6.1引言在面向過(guò)程程序設(shè)計(jì)中,數(shù)據(jù)和對(duì)數(shù)據(jù)的操作是分離的,因而這種作法需要把數(shù)據(jù)傳遞到函數(shù)和過(guò)程中。而在面向?qū)ο蟪绦蛟O(shè)計(jì)中,把數(shù)據(jù)和屬于它的操作放入一個(gè)所謂的對(duì)象(object)的整體中,這樣做解決了面向過(guò)程程序設(shè)計(jì)中不可避免的許多問(wèn)題。面向?qū)ο蟪绦蛟O(shè)計(jì)是一種更貼近真實(shí)世界的模型組織程序;使用對(duì)象可以改進(jìn)軟件的可重用性,使程序更易于開(kāi)發(fā)和維護(hù)。526.1引言在面向過(guò)程程序設(shè)計(jì)中,數(shù)據(jù)和對(duì)數(shù)據(jù)的操作是分離6.1引言Java程序可以看作是相互合作的對(duì)象所構(gòu)成的集中。本章介紹面向?qū)ο蟪绦蛟O(shè)計(jì)的基本知識(shí):聲明類(lèi)、創(chuàng)建對(duì)象、處理對(duì)象以及組織對(duì)象協(xié)調(diào)工作。536.1引言Java程序可以看作是相互合作的對(duì)象所構(gòu)成的集內(nèi)容摘要6.1引言6.2對(duì)象和類(lèi)6.3使用構(gòu)造方法創(chuàng)建對(duì)象6.4通過(guò)引用變量來(lái)訪問(wèn)對(duì)象6.5使用Java類(lèi)庫(kù)中的類(lèi)6.6可見(jiàn)性修飾符、訪問(wèn)器和修改器6.7數(shù)據(jù)域的封裝54內(nèi)容摘要6.1引言96.2對(duì)象和類(lèi)對(duì)象(object)代表現(xiàn)實(shí)世界中可以明確標(biāo)識(shí)的一個(gè)事物。例如,一個(gè)學(xué)生,一張桌子,一個(gè)圓,一個(gè)銨鈕甚至一筆貸款都可以看作一個(gè)對(duì)象。對(duì)象有自己獨(dú)有的特性、狀態(tài)和行為。對(duì)象的狀態(tài)是由具有當(dāng)前值的數(shù)據(jù)域的集合構(gòu)成;對(duì)象的行為是由方法的集合定義的。圖6-1(a)描述了一個(gè)一般對(duì)象與它的數(shù)據(jù)域和方法。調(diào)用對(duì)象的一個(gè)方法就是要求對(duì)象執(zhí)行一項(xiàng)任務(wù)。例如,Circle對(duì)象具有數(shù)據(jù)域radius,它是556.2對(duì)象和類(lèi)對(duì)象(object)代表現(xiàn)實(shí)世界中可以明確標(biāo)6.2對(duì)象和類(lèi)圓的特征屬性。圓的一個(gè)行為是使用findArea()方法計(jì)算它的面積。如圖6-1(b)所示566.2對(duì)象和類(lèi)圓的特征屬性。圓的一個(gè)行為是使用findAr6.2對(duì)象和類(lèi)類(lèi)(class)是定義同一類(lèi)型對(duì)象的結(jié)構(gòu)。在Java的類(lèi)中,數(shù)據(jù)用來(lái)描述屬性,方法用來(lái)定義行為。此外,還提供一個(gè)特殊的方法,稱(chēng)為構(gòu)造方法(constructor),調(diào)用它可以創(chuàng)建類(lèi)的對(duì)象。構(gòu)造方法很象一般的方法,可以執(zhí)行任何操作,但是設(shè)計(jì)構(gòu)造方法是為了進(jìn)行初始化操作。例如,初始化對(duì)象的數(shù)據(jù)域。圖6-2顯示了Circle對(duì)象的類(lèi)的例子。576.2對(duì)象和類(lèi)類(lèi)(class)是定義同一類(lèi)型對(duì)象的結(jié)構(gòu)。在6.2對(duì)象和類(lèi)586.2對(duì)象和類(lèi)136.2對(duì)象和類(lèi)注意1:Circle類(lèi)與目前所見(jiàn)過(guò)的所有其他類(lèi)不同。它沒(méi)有main方法,因此,不能運(yùn)行,它僅僅是一個(gè)用于聲明和創(chuàng)建Circle對(duì)象的定義。注意2:Circle類(lèi)中定義了2個(gè)構(gòu)造方法,第一個(gè)沒(méi)有參數(shù),這種沒(méi)有參數(shù)的構(gòu)造方法稱(chēng)為無(wú)參構(gòu)造方法。596.2對(duì)象和類(lèi)注意1:Circle類(lèi)與目前所見(jiàn)過(guò)的所有其他內(nèi)容摘要6.1引言6.2對(duì)象和類(lèi)6.3使用構(gòu)造方法創(chuàng)建對(duì)象

6.4通過(guò)引用變量來(lái)訪問(wèn)對(duì)象6.5使用Java類(lèi)庫(kù)中的類(lèi)6.6可見(jiàn)性修飾符、訪問(wèn)器和修改器6.7數(shù)據(jù)域的封裝60內(nèi)容摘要6.1引言156.3使用構(gòu)造方法創(chuàng)建對(duì)象構(gòu)造方法必須與定義它的類(lèi)有完全的名字。和所有方法一樣,構(gòu)造方法可以被重載,從而更易于用不同的初始數(shù)據(jù)值來(lái)構(gòu)造對(duì)象。在類(lèi)中創(chuàng)建一個(gè)對(duì)象,使用new操作符調(diào)用構(gòu)造方法,如:nesw<類(lèi)名>(參數(shù));例如,newCircle()調(diào)Circle類(lèi)中第一個(gè)構(gòu)造方法,創(chuàng)建一個(gè)Circle對(duì)象;newCircle(5)調(diào)Circle類(lèi)中第二個(gè)構(gòu)造方法,創(chuàng)建一個(gè)Circle對(duì)象,該對(duì)象半徑為5。616.3使用構(gòu)造方法創(chuàng)建對(duì)象構(gòu)造方法必須與定義它的類(lèi)有完全的6.3使用構(gòu)造方法創(chuàng)建對(duì)象一個(gè)類(lèi)不聲明構(gòu)造方法,在這種情況下,類(lèi)中隱含地聲明了一個(gè)方法體為空的無(wú)參構(gòu)造方法。注意,構(gòu)造方法是一種特殊方法,與一般方法有三點(diǎn)不同:1)構(gòu)造方法必須與所在類(lèi)具有相同的名字;2)構(gòu)造方法沒(méi)有返回類(lèi)型,甚至連void也沒(méi)有;3)構(gòu)造方法的調(diào)用是在創(chuàng)建一個(gè)對(duì)象時(shí)使用new操作符進(jìn)行的;構(gòu)造方法的作用是初始化對(duì)象。626.3使用構(gòu)造方法創(chuàng)建對(duì)象一個(gè)類(lèi)不聲明構(gòu)造方法,在這種情況內(nèi)容摘要6.1引言6.2對(duì)象和類(lèi)6.3使用構(gòu)造方法創(chuàng)建對(duì)象6.4通過(guò)引用變量來(lái)訪問(wèn)對(duì)象6.5使用Java類(lèi)庫(kù)中的類(lèi)6.6可見(jiàn)性修飾符、訪問(wèn)器和修改器6.7數(shù)據(jù)域的封裝63內(nèi)容摘要6.1引言186.4通過(guò)引用變量來(lái)訪問(wèn)對(duì)象新創(chuàng)建的對(duì)象在內(nèi)存中占用空間,那么它們是如何被訪問(wèn)呢?646.4通過(guò)引用變量來(lái)訪問(wèn)對(duì)象新創(chuàng)建的對(duì)象在內(nèi)存中占用空間,6.4.1引用變量和引用類(lèi)型對(duì)象通過(guò)引用變量來(lái)訪問(wèn),該變量包含對(duì)象的引用地址,使用如下語(yǔ)法格式不說(shuō)明:<類(lèi)名><對(duì)象引用變量名>;一個(gè)類(lèi)所定義的類(lèi)型被稱(chēng)為引用類(lèi)型。任何類(lèi)型為類(lèi)的變量都能引用該類(lèi)的一個(gè)實(shí)例。例:CirclemyCircle;myCircle=newCircle();656.4.1引用變量和引用類(lèi)型對(duì)象通過(guò)引用變量來(lái)訪問(wèn),該變量6.4.1引用變量和引用類(lèi)型定義引用變量和創(chuàng)建一個(gè)對(duì)象并使用引用變量指向該對(duì)象可以合并為一句來(lái)完成,其格式為:<類(lèi)名><對(duì)象引用變量名>=new<類(lèi)名>(<參數(shù)表>);例如:CirclemyCircle=newCircle();666.4.1引用變量和引用類(lèi)型定義引用變量和創(chuàng)建一個(gè)對(duì)象并使6.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法當(dāng)一個(gè)對(duì)象被創(chuàng)建后,可以通過(guò)它的引用變量來(lái)訪問(wèn),其語(yǔ)法格式為:<對(duì)象引用變量名>.<數(shù)據(jù)名>;<對(duì)象引用變量名>.<方法名>(<參數(shù)表>);例如:CirclemyCircle=newCircle();myCircle.radius=9;myCircle.findArea();676.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法當(dāng)一個(gè)對(duì)象被創(chuàng)建后,可以通過(guò)6.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法例6.1聲明類(lèi)并創(chuàng)建對(duì)象。問(wèn)題:編寫(xiě)程序,構(gòu)造半徑為5和為半徑為1的圓對(duì)象,并顯示這兩個(gè)圓的半徑和面積;再將第2個(gè)對(duì)象的半徑改為100,顯示其新的半徑和面積。解答:686.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法例6.1聲明類(lèi)并創(chuàng)建對(duì)象。6.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法classSimpleCircle{doubleradius;/**構(gòu)造一個(gè)其半徑為1的圓對(duì)象*/

SimpleCircle(){radius=1.0;}/**構(gòu)造一個(gè)由參數(shù)指定半徑的圓對(duì)象*/696.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法classSimpleCi6.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法SimpleCircle(doublenewRadius){radius=newRadius;}doublefindArea(){returnradius*radius*3.14159;}}/**類(lèi)定義結(jié)束*/706.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法SimpleCircl6.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法這個(gè)類(lèi)不是主類(lèi),不能運(yùn)行,那么如何使用呢?回答是:在主類(lèi)中使用。使用上述類(lèi)的主類(lèi)如下:publicclassTestSimpleCircle{publicstaticvoidmain(String[]args){//創(chuàng)建一個(gè)半徑為5的圓對(duì)象SimpleCirclemyCircle;myCircle=newSimpleCircle(5);716.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法這個(gè)類(lèi)不是主類(lèi),不能運(yùn)行,那6.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法//創(chuàng)建一個(gè)半徑為1的圓對(duì)象SimpleCircleyourCircle;yourCircle=newSimpleCircle();System.out.println(“其半徑為”+myCircle.radius+“的圓面積為”+myCircle.findArea());System.out.println(“其半徑為”+yourCircle.radius+“的圓面積為”+yourCircle.findArea());726.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法//創(chuàng)建一個(gè)半徑為16.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法//修改圓半徑y(tǒng)ourCircle.radius=100;System.out.println(“其半徑為”+yourCircle.radius+“的圓面積為”+yourCircle.findArea());}}736.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法//修改圓半徑286.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法這兩個(gè)類(lèi)可以放在同一個(gè)文件中。下面我們來(lái)運(yùn)行這個(gè)例子。(運(yùn)行)746.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法這兩個(gè)類(lèi)可以放在同一個(gè)文件中6.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法注意1:可以把兩個(gè)類(lèi)放在同一個(gè)文件中,但一個(gè)文件中只能有一個(gè)public類(lèi),并且public類(lèi)必須與文件名相同。注意2:上述兩個(gè)類(lèi)可以合并為一個(gè):publicclassSimpleCircle{publicstaticvoidmain(String[]args){//創(chuàng)建一個(gè)半徑為5的圓對(duì)象SimpleCirclemyCircle;myCircle=newSimpleCircle(5);//創(chuàng)建一個(gè)半徑為1的圓對(duì)象756.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法注意1:可以把兩個(gè)類(lèi)放在同一6.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法SimpleCircleyourCircle;yourCircle=newSimpleCircle();System.out.println("其半徑為"+myCircle.radius+"的圓面積為"+myCircle.findArea());System.out.println("其半徑為"+yourCircle.radius+"的圓面積為"+yourCircle.findArea());//修改圓半徑y(tǒng)ourCircle.radius=100;766.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法SimpleCirc6.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法System.out.println("其半徑為"+yourCircle.radius+"的圓面積為"+yourCircle.findArea());}doubleradius;/**構(gòu)造一個(gè)其半徑為1的圓對(duì)象*/SimpleCircle(){radius=1.0;}776.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法System.out6.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法/**構(gòu)造一個(gè)由參數(shù)指定半徑的圓對(duì)象*/SimpleCircle(doublenewRadius){radius=newRadius;}doublefindArea(){returnradius*radius*3.14159;}}786.4.2訪問(wèn)對(duì)象的數(shù)據(jù)和方法/**構(gòu)造一個(gè)由參數(shù)指6.4.3空值null如果一個(gè)引用型變量沒(méi)有引用任何對(duì)象,這個(gè)對(duì)象就有一個(gè)特別的Java值null。null與true和false一樣是一個(gè)直接量。true和false用于boolean型變量,而null用于引用型變量。引用型數(shù)據(jù)的默認(rèn)值是null,數(shù)值型的默認(rèn)值是0,boolean型的默認(rèn)值是false,char型的默認(rèn)值為’\u0000’。然而,Java沒(méi)有給方法中的局部變量賦予默認(rèn)值,下面代碼顯示Student對(duì)象中數(shù)據(jù)域name、age、isScienceMajor和gender796.4.3空值null如果一個(gè)引用型變量沒(méi)有引用任何對(duì)象,6.4.3空值null的缺省值:classStudent{Stringname;//默認(rèn)值為nullintage;//默認(rèn)值為0booleanisScienceMajor;//默認(rèn)值為falsechargender;//默認(rèn)值為’\u0000’publicstaticvoidmain(String[]args){Studentstudent=newStudent();System.out.println(“name=”+st

溫馨提示

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

評(píng)論

0/150

提交評(píng)論