第4章類與對(duì)象-構(gòu)建Java程序的基石_第1頁(yè)
第4章類與對(duì)象-構(gòu)建Java程序的基石_第2頁(yè)
第4章類與對(duì)象-構(gòu)建Java程序的基石_第3頁(yè)
第4章類與對(duì)象-構(gòu)建Java程序的基石_第4頁(yè)
第4章類與對(duì)象-構(gòu)建Java程序的基石_第5頁(yè)
已閱讀5頁(yè),還剩74頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第四章類與對(duì)象:構(gòu)建Java程序的基石

目錄

面向?qū)ο蟪绦蛟O(shè)計(jì)靜態(tài)類與靜態(tài)成員要素

Java修飾符Java程序的基本結(jié)構(gòu)

構(gòu)造方法類的描述

重點(diǎn)與難點(diǎn)點(diǎn)撥經(jīng)典練習(xí)題本章知識(shí)重點(diǎn)3132構(gòu)造方法33this關(guān)鍵字34類成員要素的訪問控制修飾符static修飾符與靜態(tài)成員要素35面向?qū)ο蟪绦蛟O(shè)計(jì)的優(yōu)越性本章知識(shí)難點(diǎn)33Java類成員要素的訪問控制修飾符343132面向?qū)ο髱状筇卣鳎撼橄?、封裝、繼承、多態(tài)Java類的訪問控制修飾符

類與對(duì)象的關(guān)系面向?qū)ο蟮幕靖拍顚?duì)象(Object)是一個(gè)應(yīng)用系統(tǒng)中用來描述客觀事物的實(shí)體,是具有特定屬性(數(shù)據(jù))和行為(方法)的基本運(yùn)行單位,是類的一個(gè)特定狀態(tài)下的實(shí)例。類(Class)是Java代碼的基本組織模塊,是用以描述一組具有共同屬性和行為的對(duì)象的基本原型,是對(duì)這組對(duì)象的概括、歸納與抽象表達(dá),它定義了本類對(duì)象所應(yīng)擁有的狀態(tài)屬性集及操作這組屬性的行為方法集。3132面向?qū)ο蟮幕靖拍?續(xù)1)接口(Interface)是一種只包含常量與抽象方法的特殊的類,是Java語言用以實(shí)現(xiàn)類間多重繼承功能的唯一手段。接口定義了一組特定功能的對(duì)外接口與規(guī)范,而并不真正實(shí)現(xiàn)這種功能,功能的實(shí)現(xiàn)留待給實(shí)現(xiàn)這一接口的各個(gè)類來完成

34包(Package)是用來容納一組相關(guān)類與接口的容器,是Java語言組織與管理類與接口的一種機(jī)制

33類與對(duì)象的關(guān)系類與對(duì)象之間的關(guān)系,類似于數(shù)據(jù)類型與變量之間的關(guān)系;一個(gè)類可以生成無數(shù)個(gè)不同的對(duì)象,每個(gè)對(duì)象屬性值不同,其狀態(tài)也不同??梢杂糜?jì)算機(jī)模型與計(jì)算機(jī)實(shí)體之間的關(guān)系來更形象地說明類與對(duì)象之間的關(guān)系:將馮·諾依曼計(jì)算機(jī)模型看作計(jì)算機(jī)類,則不同品牌的計(jì)算機(jī)實(shí)體就對(duì)應(yīng)為一個(gè)個(gè)的實(shí)例對(duì)象。類與對(duì)象的關(guān)系示例計(jì)算機(jī)模型與計(jì)算機(jī)實(shí)體之間的關(guān)系:面向?qū)ο缶幊?OOP)

從問題域客觀存在的事物出發(fā),將這些現(xiàn)實(shí)世界的物理實(shí)體抽象成概念世界的抽象數(shù)據(jù)類,再進(jìn)一步將這種抽象數(shù)據(jù)類轉(zhuǎn)換為計(jì)算機(jī)世界的類(Class);類刻畫出實(shí)體所具有的狀態(tài)信息與所能發(fā)揮的功能信息,是創(chuàng)建對(duì)象時(shí)所遵循的模板(Template)。對(duì)類進(jìn)行實(shí)例化,就生成一個(gè)個(gè)的對(duì)象,對(duì)象對(duì)應(yīng)于各個(gè)具體事物,是程序運(yùn)行過程中實(shí)際發(fā)揮作用的類的獨(dú)立內(nèi)存映像。借助于類與對(duì)象這兩個(gè)面向?qū)ο蟪绦蛑凶罨镜囊兀凑毡M可能符合人類自然思維的方式,來構(gòu)造軟件系統(tǒng),這就是所謂的面向?qū)ο蟪绦蛟O(shè)計(jì)(OOP)

OOP的邏輯過程面向?qū)ο笤O(shè)計(jì)分析的完整過程如圖所示:現(xiàn)實(shí)域抽象抽象類對(duì)象實(shí)例化映射抽象數(shù)據(jù)類物理實(shí)體邏輯實(shí)現(xiàn)概念域計(jì)算機(jī)世界面向?qū)ο蟮闹匾卣?/p>

面向?qū)ο缶哂幸韵聨讉€(gè)重要特征:抽象封裝與隱藏繼承多態(tài)性

33313234抽象抽象(Abstraction):抽象是面向?qū)ο缶幊痰钠瘘c(diǎn),也是其最本質(zhì)的特征之一。抽象的廣義概念是這樣定義的:從研究對(duì)象中提取與當(dāng)前目標(biāo)主題關(guān)系最密切的主要方面,而忽略掉與目標(biāo)無關(guān)的那些方面或關(guān)系不大的細(xì)枝末節(jié),從而更充分地注意與當(dāng)前目標(biāo)有關(guān)的方面,更明確地突出主題,這就是抽象抽象示例下圖闡述了如何由自然界眾多的動(dòng)物實(shí)體出發(fā),經(jīng)過抽象的處理過程,最終得到動(dòng)物這一概念封裝封裝(Encapsulation):封裝也可稱為信息隱藏(InformationHiding),是通過對(duì)象的方法來訪問與改變對(duì)象屬性的一種機(jī)制。封裝是面向?qū)ο蟮囊粋€(gè)重要原則,其實(shí)現(xiàn)的核心是將類的屬性與相關(guān)的操作捆綁起來,包裝成不可分割的、獨(dú)立的對(duì)象實(shí)體,將內(nèi)部的數(shù)據(jù)與實(shí)現(xiàn)細(xì)節(jié)盡可能隱蔽起來,使外部用戶不能直接操縱對(duì)象的內(nèi)部信息,只能通過對(duì)象對(duì)外提供的施加有一定限制的訪問接口來使用對(duì)象封裝示例下圖形象地說明了一個(gè)類的封裝原理。類對(duì)數(shù)據(jù)與行為的封裝是借助于不同級(jí)別的訪問修飾符來達(dá)到控制目的的繼承繼承(Inheritance):繼承是指從已有的類中可以派生出若干個(gè)新類,已有類稱為基類或父類,新類稱為派生類或子類;子類將自動(dòng)地獲得基類的屬性與方法,從而不需再重復(fù)定義這些屬性與方法;當(dāng)然子類還可以修改父類的方法或增加新的方法,從而使自己更適合特殊的需要。類之間的繼承關(guān)系是現(xiàn)實(shí)世界中遺傳關(guān)系的直接模擬多態(tài)性多態(tài)性(Polymorphism):是指允許不同類的對(duì)象對(duì)同一消息作出各自的響應(yīng),即以統(tǒng)一的風(fēng)格處理已存在的數(shù)據(jù)及相關(guān)的操作。多態(tài)性語言具有靈活、抽象、行為共享、代碼共享的優(yōu)勢(shì),較好地解決了應(yīng)用程序中方法同名的問題

OOP的優(yōu)越性從面向過程到面向?qū)ο笫浅绦蛟O(shè)計(jì)技術(shù)的一個(gè)飛躍。人們之所以要采用面向?qū)ο蟮某绦蛟O(shè)計(jì)技術(shù),其目的在于:

提升程序的開發(fā)與運(yùn)行效率提高代碼的可重用性(或者稱為復(fù)用性)按照與人類習(xí)慣思維方法一致的原則開發(fā)系統(tǒng)OOP的優(yōu)越性(續(xù))提高程序的可靠性與可維護(hù)性

提高程序的可擴(kuò)展性增強(qiáng)程序的可控制性總之,面向?qū)ο蟮某绦蛟O(shè)計(jì),能夠有效分解、降低問題的難度與復(fù)雜性,提高整個(gè)求解過程的可控制性、可監(jiān)視性和可維護(hù)性,從而獲得較高的開發(fā)效率與可靠效果類的描述類是Java語言面向?qū)ο缶幊痰幕疽?,用來定義對(duì)象的成員變量(數(shù)據(jù)域)與成員方法(功能接口),描述對(duì)象的狀態(tài)與行為。Java程序?qū)⒛阋磉_(dá)的實(shí)體或概念封裝在類中,并由類來創(chuàng)建諸多的實(shí)例對(duì)象。應(yīng)用程序的功能便是由各個(gè)類的實(shí)例對(duì)象,通過調(diào)用各類方法來實(shí)現(xiàn)的類的定義

修飾符public、說明了類的屬性,abstract與final為互斥的兩個(gè)修飾符,不能同時(shí)出現(xiàn)于一個(gè)類的聲明中類的聲明用來指定該類的訪問修飾符、類的名稱、父類名稱及實(shí)現(xiàn)接口等屬性。聲明類的完整形式為:關(guān)鍵字class后面跟隨類名,類名為用戶定義的標(biāo)識(shí)符,最好以意義完整且易于識(shí)別的英文單詞或短句作為類名;類名應(yīng)該能夠描述出類的特征或作用,類名的第一個(gè)字母通常要大寫,如果類名由多個(gè)單詞組成,則每一單詞的首字母一般都要大寫。類的定義(續(xù)1)關(guān)鍵字extends后面跟隨著基類的名稱關(guān)鍵字implements后面跟隨著類所實(shí)現(xiàn)的接口列表帶有[]的項(xiàng)目為可選項(xiàng)目,只在必要時(shí)才出現(xiàn)類體是類功能實(shí)現(xiàn)的主體,是Java語句的集合

語句塊界定符{及}標(biāo)識(shí)出類體的有效范圍類的描述(續(xù)2)成員變量與成員方法為類的成員要素,簡(jiǎn)稱為成員(Member),它們又分為靜態(tài)/類的要素與對(duì)象/實(shí)例要素兩類。

構(gòu)造方法是具有與類名相同名稱的一種特殊方法,用來創(chuàng)建類的對(duì)象及對(duì)成員變量進(jìn)行初始化。構(gòu)造方法為可選項(xiàng),當(dāng)省略時(shí),Java系統(tǒng)會(huì)按缺省方式定義空白的構(gòu)造方法。類定義示例【例】建立一個(gè)公共的最終類—日期類,其聲明格式如下:publicfinalclassDate//類的聲明語句{//類體定義

privateintyear;//年

privateintmonth;//月

privateintday;//日

publicinitDate(int

y,int

m,intd){……}//初始化年、月、日值的方法

publicshowDate(){……}//顯示當(dāng)前日期值的方法}屬性聲明public、protected與private為成員要素訪問修飾符,用來限制成員變量或成員方法的訪問范圍,即哪些類或?qū)ο罂梢栽L問此成員要素static用來指明成員要素為靜態(tài)要素,又稱類要素,以區(qū)別于對(duì)象要素。靜態(tài)要素存在于類的定義區(qū)域中,屬于類本身的成員,每個(gè)該類的對(duì)象共享這些要素

屬性:成員變量(MemberVariable)又稱為屬性(Attribute)或數(shù)據(jù)域(DataField),用來描述類對(duì)象的數(shù)據(jù)特征屬性聲明(續(xù)1)final用于成員變量時(shí),是作為定義最終變量即常量的關(guān)鍵字。這類常量的值不允許修改。transient(意為短暫的、瞬時(shí)的)為專門用于成員變量的修飾符,表明成員變量為臨時(shí)變量

volatile(意為可變的、不穩(wěn)定的)為專門用于成員變量的修飾符,聲明一個(gè)被多個(gè)并發(fā)線程所共享的變量屬性聲明(續(xù)2)成員變量名為用戶自定義的標(biāo)識(shí)符,一般為有意義的英文單詞或單詞組合;變量名的第一個(gè)字母小寫,如果包含多個(gè)單詞,則其他單詞的首字母大寫一個(gè)定義語句可以聲明一個(gè)成員變量,也可以聲明多個(gè)同類型的成員變量。不同類型的成員變量必須分別由不同的聲明語句來定義屬性定義示例【例】定義一個(gè)包訪問屬性的學(xué)生類Student,該類繼承自Person父類,其屬性包含學(xué)號(hào)、姓名、性別、出生日期、電子郵箱、手機(jī)號(hào)碼、QQ號(hào)碼、通訊地址等。類的定義代碼如下:classStudentextendsPerson//extends關(guān)鍵字后面跟隨基類名稱{publicStringcode;//學(xué)號(hào)

publicStringname;//姓名

publicbooleansex;//性別

privateDatebirthDate;//出生日期

privateStringEmail;//電子郵箱

privateStringcellPhoneCode;//手機(jī)號(hào)碼

privateint

QQCode;//QQ號(hào)碼

publicStringaddress;//通訊地址……//成員方法定義(略)}類的成員方法成員方法(MemberMethod)又稱為功能接口(FunctionInterface),簡(jiǎn)稱為方法(Method),是類對(duì)象與外界的接口,描述了類對(duì)象的行為方式,反應(yīng)了對(duì)象的行為特征,特別是對(duì)屬性進(jìn)行操作的特征。成員方法對(duì)成員變量的操作主要體現(xiàn)在以下兩個(gè)方面:改變對(duì)象的屬性,一般記為set方法返回對(duì)象的屬性,一般記為get方法成員方法的定義類中可定義多個(gè)方法,其定義格式如下:[成員方法修飾符]<方法返回類型><方法名>([參數(shù)列表])[throws<異常列表>]{//方法體定義

……//用于描繪方法行為的Java語句}成員方法展開的定義格式為:[public|protected|private][static][final|abstract][native][synchronized]<方法的返回類型><方法名>([參數(shù)列表])[throws<異常列表>]{……}成員方法的定義(續(xù)1)<方法的返回類型><方法名>([參數(shù)列表])子句為成員方法的方法原型。其中成員方法修飾符為修飾成員方法的一些關(guān)鍵字習(xí)慣上,人們將屬性的聲明放在方法之前,但Java編譯器對(duì)屬性和方法的位置并無規(guī)定,二者出現(xiàn)的順序可以任意進(jìn)行組合穿插,在語法上都是有效的333132成員方法的定義(續(xù)2)throws<異常列表>子句稱為聲明拋出異常短語。如果定義的方法可能會(huì)產(chǎn)生自己不準(zhǔn)備處理或無法處理的異常(異常為一種嚴(yán)重級(jí)別不高的錯(cuò)誤),應(yīng)該在方法定義語句的throws子句中聲明拋棄該類異常,使得該類異常對(duì)象從調(diào)用的棧中向上傳播,直到有合適的方法捕獲到它并給予處理為止34構(gòu)造方法構(gòu)造方法(Constructor)又稱為構(gòu)造器,熟悉C++語言的人習(xí)慣上稱之為構(gòu)造函數(shù)。構(gòu)造方法是類用來創(chuàng)建對(duì)象、初始化類的屬性的一種特殊方法,它本身不屬于類的成員方法。Java中所有的類至少都要有一個(gè)構(gòu)造方法,即使用戶不明確地定義,系統(tǒng)也會(huì)為該類生成一個(gè)默認(rèn)構(gòu)造方法或缺省構(gòu)造方法,這種缺省構(gòu)造方法沒有任何參數(shù),且方法體為空。構(gòu)造方法的特殊性構(gòu)造方法沒有返回類型,也不允許返回void類型。構(gòu)造方法的方法名與類名完全相同(包括字母大小寫)一個(gè)類可以包含多個(gè)重載的構(gòu)造方法,使用這些重載的構(gòu)造方法創(chuàng)建不同對(duì)象時(shí),通過參數(shù)的不同來決定調(diào)用哪個(gè)構(gòu)造方法。構(gòu)造方法不允許用戶直接調(diào)用,只能通過new關(guān)鍵字在創(chuàng)建對(duì)象時(shí)由系統(tǒng)調(diào)用。33343132構(gòu)造方法的特殊性(續(xù))構(gòu)造方法可以繼承,即子類能夠繼承父類的構(gòu)造方法構(gòu)造方法用于創(chuàng)建對(duì)象時(shí)由系統(tǒng)自動(dòng)調(diào)用,一般定義為public訪問修飾類型或默認(rèn)的包訪問類型,極少有需要定義為private或protected訪問類型的場(chǎng)合構(gòu)造方法中可以使用super與this兩個(gè)關(guān)鍵字來引用直接父類或自身對(duì)象353637實(shí)例對(duì)象類是用來描述對(duì)象數(shù)據(jù)與行為的模板與規(guī)范,是一個(gè)抽象的概念,無法直接使用類來完成數(shù)據(jù)狀態(tài)的改變與行為的實(shí)施,必須由一個(gè)個(gè)的對(duì)象來搭建應(yīng)用程序的大廈。創(chuàng)建對(duì)象一般包括三個(gè)步驟:

聲明對(duì)象引用變量建立對(duì)象實(shí)體初始化對(duì)象

實(shí)例對(duì)象的引用對(duì)象實(shí)體(Object)與對(duì)象引用變量(ObjectReferenceVariable)是兩個(gè)完全不同的概念。對(duì)象實(shí)體是類映射在內(nèi)存中的一塊物理區(qū)域,該區(qū)域中存儲(chǔ)著類所定義的成員的當(dāng)前狀態(tài)。對(duì)象引用變量并不是對(duì)象本身,而是指向?qū)ο髮?shí)體的符號(hào)標(biāo)識(shí),其值為一個(gè)32位的地址,該地址對(duì)應(yīng)的存儲(chǔ)空間為對(duì)象的物理存放區(qū)域一個(gè)對(duì)象可以被多個(gè)對(duì)象引用變量引用,但一個(gè)對(duì)象引用變量某一時(shí)該只能指向一個(gè)特定的對(duì)象對(duì)象引用示例例如下面的兩行代碼:CubecubeObj1,cubeObj2=null;cubeObj1=newCube(50,40,30);第一個(gè)語句聲明了兩個(gè)立方體對(duì)象引用變量并初始化第二個(gè)變量的值為null,即cubeObj2變量不引用任何對(duì)象,它的“地址”為空值;第二個(gè)語句調(diào)用Cube類具有三個(gè)參數(shù)的構(gòu)造方法,創(chuàng)建了一個(gè)實(shí)際的對(duì)象實(shí)體,并將對(duì)象的引用地址賦予對(duì)第一個(gè)變量對(duì)象引用示例圖

如同簡(jiǎn)單數(shù)據(jù)類型的變量之間可以相互賦值,對(duì)象引用變量之間也可相互賦值。對(duì)象變量之間的賦值,并不重新生成對(duì)象的拷貝,而只是將一個(gè)對(duì)象變量的引用復(fù)雜給另一個(gè)對(duì)象變量,從而使它們最終都指向同一個(gè)對(duì)象實(shí)體的內(nèi)存地址。賦值語句cubeObj2=cubeObj1;將變量cubeObj1指向的對(duì)象引用賦值給了cubeObj2變量,使得兩個(gè)對(duì)象變量都指向同一個(gè)對(duì)象使用對(duì)象成員要素對(duì)象創(chuàng)建后,就擁有了類的屬性與方法的實(shí)例化副本,通過對(duì)象引用變量及點(diǎn)符號(hào)(.),便可以使用該對(duì)象,實(shí)現(xiàn)對(duì)對(duì)象屬性與方法的訪問調(diào)用對(duì)象成員方法(續(xù))調(diào)用對(duì)象成員方法的命令格式為:<對(duì)象引用變量>.方法名([參數(shù)列表])訪問對(duì)象屬性的命令格式為:<對(duì)象引用變量>.<屬性名>this關(guān)鍵字this是一種特殊的引用,它指向?qū)ο笞陨?,表示?duì)自身對(duì)象的一個(gè)引用。通過this這一引用,能夠訪問對(duì)象自身的成員數(shù)據(jù),調(diào)用對(duì)象自身的成員方法??梢詫his作為對(duì)象特殊的引用變量的名稱,該變量可被訪對(duì)象自身使用。this關(guān)鍵字主要用于類的非靜態(tài)成員方法(即實(shí)例方法)與構(gòu)造方法中,而在靜態(tài)方法(即類方法)中是不允許使用this關(guān)鍵字的。this關(guān)鍵字的用途構(gòu)造方法中通過this引用同類的其他重載構(gòu)造方法在非靜態(tài)成員方法中,通過this訪問當(dāng)前對(duì)象的成員變量或成員方法在構(gòu)造方法中或非靜態(tài)成員方法中,參數(shù)名或方法內(nèi)的局部變量名與類的屬性同名,為區(qū)分開來,需要在類的屬性名前加上this.前綴

在非靜態(tài)成員方法的參數(shù)中,包含有對(duì)當(dāng)前對(duì)象引用的對(duì)象類型參數(shù),此時(shí)需用this來傳遞這類參數(shù)get與set方法get方法返回特定屬性的當(dāng)前值它的方法原型可描述為:

public<反回的數(shù)據(jù)類型>get<屬性名稱>()set方法用來設(shè)置或修改某一屬性的值它的方法原型可描述為:publicvoidset<屬性名稱>(<屬性的數(shù)據(jù)類型><參數(shù)>)get與set方法的好處類能夠?qū)?shù)據(jù)的內(nèi)部實(shí)現(xiàn)隱藏起來,而提供給對(duì)外一個(gè)接口,從而避免用戶直接操縱類的屬性通過對(duì)get或set方法設(shè)置功能代碼,類能夠有效地實(shí)施成員變量的合法性檢查通過get或set方法的組合,能夠控制某些屬性的只讀或只寫屬性。如對(duì)于點(diǎn)類僅僅提供getX()方法,而不提供setX()方法,則x坐標(biāo)屬性就成為一個(gè)只讀的屬性333132Java的修飾符Java的修飾符(Modifier)是一組用來描述與刻畫類、屬性、構(gòu)造方法與成員方法的系統(tǒng)關(guān)鍵字。主要包括訪問權(quán)限控制修飾符與特征修飾符特征修飾符是用來刻畫類、成員變量或成員方法特定特征的修飾符,針對(duì)不同的對(duì)象,特征修飾符的內(nèi)容也各不相同訪問權(quán)限控制修飾符簡(jiǎn)稱訪問控制修飾符或訪問修飾符,其作用是指明類、屬性或方法是否可以被程序里的其他部分訪問和調(diào)用,限定程序的哪些其他部分可以訪問和調(diào)用它們,哪些不可以Java修飾符列表Java的修飾符類成員變量成員方法構(gòu)造方法訪問修飾符public√√√√protected×√√√private×√√√缺省(package)√√√√特征修飾符static×√√×abstract√×√×final√√√×transient×√××volatile×√××native××√×synchronized××√×類的訪問控制修飾符公共類訪問修飾符public一個(gè)類被聲明為公共類,表明它可以被所有的其他的類所訪問和引用,其他的類既包括本包的類,也包括其他包的類缺省的類訪問修飾符缺省的包訪問屬性規(guī)定該類只能被同一個(gè)包中的其他類或?qū)ο笏L問和引用,而不允許被其他包中的類或?qū)ο笏褂妙惓蓡T的訪問控制修飾符31公共訪問修飾符public

32保護(hù)訪問修飾符protected

33私有訪問修飾符private34缺省的訪問修飾符類的特征修飾符

abstract特征修飾符final特征修飾符類的所有修飾符成員變量的特征修飾符

static與特征修飾符final特征修飾符transient屬性修飾符volatile屬性修飾符成員變量的所有修飾符成員方法的特征修飾符

static特征修飾符abstract特征修飾符final特征修飾符synchronized修飾符native修飾符成員方法的所有修飾符缺省的修飾符訪問屬性訪問修飾符關(guān)鍵字本類相同包中的不同類(包含子類)不同包中的子類不同包中的非子類公共訪問屬性public??♂?♂?♂保護(hù)訪問屬性protected??♂♂私有訪問屬性private?缺省的包訪問屬性無??♂訪問修飾符的控制范圍注:?表示能夠訪問訪問修飾符定義的類♂表示能夠繼承訪問修飾符定義的類static修飾符與靜態(tài)成員要素類的成員要素可以被特征修飾符static聲明為靜態(tài)成員要素。靜態(tài)成員要素屬于整個(gè)類,能夠通過類名來直接使用,而不需引用任何類的實(shí)例對(duì)象,因而靜態(tài)成員要素又稱為類成員要素,簡(jiǎn)稱類成員(ClassMember)或靜態(tài)成員(StaticMember)。靜態(tài)成員要素包括靜態(tài)屬性(StaticAttribute)與靜態(tài)方法(StaticMethod),它們先于類的任何實(shí)例對(duì)象創(chuàng)建之前而存在。靜態(tài)屬性的特征靜態(tài)屬性在類加載時(shí)自動(dòng)創(chuàng)建,并被存放在類的內(nèi)存體中的公共存儲(chǔ)單元中該類所有的對(duì)象共享同一個(gè)靜態(tài)屬性,存取到的是相同的值靜態(tài)屬性可以通過類名直接訪問,也可以由對(duì)象變量來引用靜態(tài)屬性與非靜態(tài)屬性一樣,可以使用public、private、final等修飾符靜態(tài)方法的特征31靜態(tài)方法屬于整個(gè)類

32靜態(tài)方法可通過類名直接訪問或者由對(duì)象變量來引用

33靜態(tài)方法只能訪問該類的靜態(tài)屬性,不能訪問該類的實(shí)例變量

34靜態(tài)方法只能調(diào)用該類的其他靜態(tài)方法,不能調(diào)用該類的實(shí)例方法

靜態(tài)方法的特征(續(xù))靜態(tài)方法不能以任何方式引用this與super關(guān)鍵字靜態(tài)方法不能被子類所覆蓋Java的應(yīng)用程序必須有且只能有一個(gè)入口方法main(),是程序運(yùn)行的起點(diǎn),它存在于所有對(duì)象創(chuàng)建之前,因而main方法必須被定義為靜態(tài)方法363738但實(shí)例方法卻可以訪問該類的靜態(tài)屬性與靜態(tài)方法

35四類成員要素的性質(zhì)與特征四類成員要素的使用及訪問方式表成員要素類型存在時(shí)機(jī)通過類名使用由對(duì)象引用能否在靜態(tài)方法中訪問能否在實(shí)例方法中訪問靜態(tài)/類屬性對(duì)象創(chuàng)建前已存在√√√√實(shí)例/對(duì)象屬性對(duì)象創(chuàng)建后才存在×√×√靜態(tài)/類方法對(duì)象創(chuàng)建前已存在√√√√實(shí)例/對(duì)象方法對(duì)象創(chuàng)建后才存在×√×√Java應(yīng)用程序的基本結(jié)構(gòu)

[package<聲明的包名稱>;][import<Java類庫(kù)1>;][……][import<Java類庫(kù)m>;]定義用戶類1{定義類1的若干成員變量定義類1的若干構(gòu)造方法定義類1的若干成員方法}定義用戶類2{定義類2的若干成員變量定義類2的若干構(gòu)造方法定義類2的若干成員方法}……定義用戶類n{定義類n的若干成員變量定義類n的若干構(gòu)造方法定義類n的若干成員方法}成員方法程序的基本構(gòu)成單元是類,而成員方法又是類的主要組成部分,類的功能主要由成員方法來體現(xiàn)。成員方法簡(jiǎn)稱方法,它定義了類的行為或動(dòng)作,描述了對(duì)象可以執(zhí)行的操作規(guī)范,規(guī)定了類與外界進(jìn)行交互的接口方法是一個(gè)有名字的、具有相對(duì)獨(dú)立功能的程序模塊。對(duì)象通過執(zhí)行成員方法對(duì)傳遞過來的消息作出響應(yīng),從而完成特定的功能。方法之間可以互相調(diào)用,同一個(gè)方法可被一個(gè)或多個(gè)方法調(diào)用任意次方法的聲明Java程序中,成員方法只能在類中聲明。聲明方法的格式如下:[方法修飾符]<返回值類型><方法名>([參數(shù)列表])throws<異常列表>//方法頭部聲明

{//方法體定義局部變量聲明;語句序列;

[return<表達(dá)式>;]}方法定義的兩個(gè)部分方法定義中包含兩部分內(nèi)容:方法頭部聲明與方法體定義方法頭部聲明定義了方法的原型與性質(zhì)。一般由方法名、參數(shù)列表、返回類型、方法修飾符和方法拋出異常五部分組成方法體則定義了方法的具體內(nèi)容與操作邏輯。方法體通常包含兩類功能:一是對(duì)類的屬性進(jìn)行各種操作;二是與其他的類與對(duì)象進(jìn)行消息傳遞操作頭部聲明與方法體定義31方法頭部聲明定義了方法的原型與性質(zhì)32方法體則定義了方法的具體內(nèi)容與操作邏輯33方法體通常包含兩類功能:一是對(duì)類的屬性進(jìn)行各種操作;二是與其他的類與對(duì)象進(jìn)行消息傳遞操作

局部變量類中的數(shù)據(jù)變量可分為成員變量(MemberVariable)與局部變量(LocalVariable)兩類成員變量在類體中定義,其作用域?yàn)檎麄€(gè)類。成員變量在類中定義的順序與位置并不影響它的作用域范圍局部變量的作用域(Scope)又稱為局部變量的作用范圍,它是變量可被使用的代碼塊范圍;作用域決定了變量的可見性與生存時(shí)間。局部變量作用域開始于它的聲明,持續(xù)到包含該局部變量的程序段結(jié)束之處。不同類型的局部變量,其作用域也不盡相同3231局部變量的三種類型定義于方法體內(nèi)的局部變量:這類局部變量?jī)H能在方法內(nèi)使用,其作用域局限于所定義的方法體。復(fù)合語句(或稱為語句塊)中定義的局部變量:這類局部變量只在復(fù)合語句中有效。方法的形參也稱為局部變量:這類局部變量的作用域覆蓋整個(gè)方法。方法形參在方法被調(diào)用時(shí)被創(chuàng)建,并以調(diào)用方法傳來的實(shí)參作為其初始值,當(dāng)方法終止,調(diào)用結(jié)束時(shí),這些形參自動(dòng)被釋放,其生命周期也隨著終止。333132局部變量的使用原則局部變量不允許加Java修飾符局部變量在使用前必須先聲明,并賦初值,否則將出錯(cuò)方法參數(shù)傳遞機(jī)制方法的參數(shù)是方法的輸入接口,是外界傳遞

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論