版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第四章類(lèi)與面向?qū)ο缶幊?.1面向?qū)ο缶幊袒A(chǔ)4.2類(lèi)的編程實(shí)現(xiàn)4.3對(duì)象的定義與使用4.4重載4.5訪問(wèn)控制符4.6其它修飾符面向?qū)ο缶幊袒A(chǔ)類(lèi)(Class)類(lèi)是描述對(duì)象的“基本原型”,它定義一類(lèi)對(duì)象所能擁有的數(shù)據(jù)和能完成的操作。在面向?qū)ο蟮某绦蛟O(shè)計(jì)中,類(lèi)是程序的基本單元相似的對(duì)象可以歸并到同一個(gè)類(lèi)中去,就像傳統(tǒng)語(yǔ)言中的變量與類(lèi)型關(guān)系一樣。程序中的對(duì)象是類(lèi)的一個(gè)實(shí)例,是一個(gè)軟件單元,它由一組結(jié)構(gòu)化的數(shù)據(jù)和在其上的一組操作構(gòu)成。面向?qū)ο缶幊袒A(chǔ)……Carcar1;Carcar2;……CarcarN;面向?qū)ο缶幊袒A(chǔ)對(duì)象的主要屬性是狀態(tài)和行為。對(duì)象的狀態(tài)為靜態(tài)屬性,即變量。它表示對(duì)象所處的狀態(tài)。對(duì)象的操作可以改變對(duì)象的狀態(tài)。對(duì)象的行為為動(dòng)態(tài)屬性,也成為操作。操作的作用是設(shè)置或者改變對(duì)象的狀態(tài)。ClassDemo.javaClassClassDemo{
inta;
intb;
ClassDemo(){a=2;b=3;}voidshow(){
System.out.println(“a=”+a+”,b=”+b);}publicstaticvoidmain(Stringargs[])………..}狀態(tài)行為面向?qū)ο缶幊袒A(chǔ)面向?qū)ο蟪绦蛟O(shè)計(jì)的優(yōu)點(diǎn):較高的可維護(hù)性。面向?qū)ο缶幊讨校绦蛴啥鄠€(gè)類(lèi)組成,類(lèi)中包含屬性和方法的定義,類(lèi)與類(lèi)之間通過(guò)方法調(diào)用實(shí)現(xiàn)交互,而不是共享數(shù)據(jù),這徹底消除了面向過(guò)程編程中數(shù)據(jù)與操作分離帶來(lái)的問(wèn)題,提高了程序的可維護(hù)性??芍赜眯愿?,通過(guò)設(shè)計(jì)一個(gè)個(gè)實(shí)現(xiàn)特定功能的對(duì)象,可提高程序的可重復(fù)性。繼承是面向?qū)ο蟮囊粋€(gè)重要特性,通過(guò)繼承可以實(shí)現(xiàn)子類(lèi)對(duì)父類(lèi)的擴(kuò)展和父類(lèi)代碼的重復(fù)使用,提高了程序開(kāi)發(fā)效率,降低了開(kāi)發(fā)成本。保護(hù)數(shù)據(jù)。通過(guò)將數(shù)據(jù)封裝在對(duì)象中,對(duì)外只提供訪問(wèn)數(shù)據(jù)的方法,保護(hù)了數(shù)據(jù)不能被隨便修改,減少了模塊間的干擾。對(duì)象的抽象一、對(duì)象的抽象用面向?qū)ο蠓椒ń鉀Q現(xiàn)實(shí)世界的問(wèn)題時(shí),去掉物體中與問(wèn)題不相關(guān)的部分,并形成我們需要的類(lèi)的過(guò)程成為抽象。
封裝封裝是利用將數(shù)據(jù)和對(duì)數(shù)據(jù)的操作封裝在一個(gè)抽象數(shù)據(jù)類(lèi)型中,數(shù)據(jù)被保護(hù)在抽象數(shù)據(jù)類(lèi)型的內(nèi)部,系統(tǒng)的其它部分只能通過(guò)接口才能與數(shù)據(jù)進(jìn)行交互。
類(lèi)定義Java中,類(lèi)定義的基本語(yǔ)法如下:[Specifier]class
ClassName[extends
SuperClassName][implements
InterfaceName]{
//類(lèi)的成員變量定義//類(lèi)的方法定義…}
類(lèi)定義下面的代碼定義了一個(gè)最簡(jiǎn)單的類(lèi)Person://Person.java//thisprogramisaboutthedefinitionofthepersonclassPerson{}域的定義
域定義的方式如下:[Specifier]typevariableName;intx=3,y;//定義了整型變量x和yDatetoday;
//定義了Date型類(lèi)變量todayChar[]m;//定義了字符型數(shù)組變量x和y
域定義的一個(gè)例子下面定義了一個(gè)包含域的定義的類(lèi)Person://Person.java//thisprogramisaboutthedefinitionofthepersonclassPerson{//域定義
Stringname;//姓名
intsex;//性別
privatedoublesalary;//薪水
intage;//年齡}方法的定義
方法由方法頭和方法體構(gòu)成,方法定義的語(yǔ)法如下:[Specifier]returnType
methodName([parameterList]){//方法體}classPerson{//域定義
Stringname;//姓名
intsex;//性別
privatedoublesalary;//薪水
intage;//年齡
//方法定義StringgetName(){returnname;}voidsetName(Strings){name=s;}doublegetIncome(){returnsalary;}voidsetIncome(doubled){salary=d;}}
1.
方法的返回值
在進(jìn)行方法定義時(shí),Java要求必須說(shuō)明返回值的類(lèi)型。如果方法沒(méi)有返回值,那么需要在方法名前添加關(guān)鍵字void
int
mx(){i++;j=i++;
System.out.println("i="+i);
System.out.println("j="+j);
return(j*i);}無(wú)返回值的方法voidmp(){ i=j=6;
System.out.println("i="+i);
System.out.println("j="+j);}2.方法的參數(shù)
Java的方法也可以帶參數(shù),以便從外部向方法提供信息。編寫(xiě)方法時(shí),需要確定參數(shù)的數(shù)量和類(lèi)型,在方法定義中說(shuō)明方法的所有參數(shù)名和參數(shù)的類(lèi)型doublecomputeArea(doublex,doubley){doubles;s=x*y;returns;}
參數(shù)名可以與類(lèi)的域名相同,如果相同,那么參數(shù)名將在方法體內(nèi)隱藏同名的成員變量。publicclassRectangle{doublex;doubley;doublecomputeArea(doublex,doubley){doubles;s=x*y;returns;}}3.方法體中的變量
在方法體中定義的變量稱為局部變量,它只能被定義它的方法內(nèi)部訪問(wèn)。而成員變量可以被類(lèi)中的所有方法訪問(wèn)。
與成員變量不同,局部變量使用前,必須進(jìn)行初始化。
局部變量的名字可以與成員變量相同
1publicclassEqualVarible{
inti=2;voidmv(){
inti=6;
System.out.println("i="+i);//System.out.println("this.i="+this.i);}publicstaticvoidmain(Stringargs[]){
EqualVariblel=newLocalVarible();
l.mv();}}4.3對(duì)象的定義與使用
1.對(duì)象的聲明
對(duì)象聲明的語(yǔ)法如下:className
objectName;其中,className是類(lèi)名,用來(lái)說(shuō)明對(duì)象所屬的類(lèi)。objectName是對(duì)象名,對(duì)象名的第一個(gè)字符一般為小寫(xiě)字母。下面定義一個(gè)Person類(lèi)的對(duì)象myPerson:
PersonmyPerson;
2.對(duì)象的實(shí)例化
對(duì)象實(shí)例化的語(yǔ)法為:objectName=newclassName([ParameterValue]);關(guān)鍵字new的作用是為對(duì)象向系統(tǒng)申請(qǐng)內(nèi)存,并且同時(shí)調(diào)用className類(lèi)的構(gòu)造方法對(duì)對(duì)象進(jìn)行初始化。
下面是對(duì)象實(shí)例化的例子:
myPerson=newPerson();構(gòu)造方法
構(gòu)造方法是類(lèi)的一種特殊方法,主要作用是在創(chuàng)建類(lèi)對(duì)象時(shí),初始化類(lèi)的實(shí)例對(duì)象。特點(diǎn):
構(gòu)造方法的方法名必須與類(lèi)名相同。構(gòu)造方法沒(méi)有返回值,也不需要返回類(lèi)型修飾符。用戶不能直接調(diào)用構(gòu)造方法。構(gòu)造方法在用戶創(chuàng)建對(duì)象時(shí),由系統(tǒng)自動(dòng)調(diào)用執(zhí)行。構(gòu)造方法的作用是對(duì)類(lèi)對(duì)象進(jìn)行初始化。構(gòu)造方法的定義可以為前面定義的Person類(lèi)添加如下構(gòu)造方法:Person(Stringn,ints,doublei,inta){ name=n; sex=s; salary=i; age=a;}缺省構(gòu)造類(lèi)中可以不用定義構(gòu)造方法,如果沒(méi)有構(gòu)造方法,系統(tǒng)將為該類(lèi)缺省定義一個(gè)空構(gòu)造方法,也稱為缺省構(gòu)造方法。用缺省構(gòu)造方法初始化對(duì)象時(shí),系統(tǒng)用缺省值初始化類(lèi)對(duì)象的數(shù)據(jù)成員。
各數(shù)據(jù)類(lèi)型的缺省值如下:數(shù)值型:0布爾型:false字符型:’\0’
類(lèi):null對(duì)象的使用可以用點(diǎn)(.)操作符來(lái)調(diào)用對(duì)象實(shí)例的成員變量和方法
1.域的引用
成員變量引用的形式如下:
objectreference.variablename
例如可以通過(guò)賦值語(yǔ)句修改firstP的值。
firstP=“Henry”;
對(duì)象的使用2.方法的調(diào)用對(duì)象的方法調(diào)用的一般形式如下:objectreference.methodname(parameter-list)例如:PersonfirstPerson=newPerson();firstPerson.setName(“Larry”);3.方法的賦值調(diào)用和引用
方法與外界進(jìn)行信息交換的方式有三種:1.通過(guò)方法的返回值2.利用類(lèi)的成員變量3.通過(guò)方法中的參數(shù)傳遞
利用參數(shù)傳遞的方法實(shí)現(xiàn)信息交換。參數(shù)可以為任何的數(shù)據(jù)類(lèi)型,如基本數(shù)據(jù)類(lèi)型、數(shù)組、類(lèi)。根據(jù)參數(shù)類(lèi)型的不同,參數(shù)交換的實(shí)現(xiàn)分為賦值調(diào)用方式和引用方式。
⑴
賦值調(diào)用
賦值調(diào)用中,參數(shù)是基本數(shù)據(jù)類(lèi)型的變量,如:整型、實(shí)型、字符型等等。賦值調(diào)用中,實(shí)參的值不受形參的影響。
⑵引用
引用中,參數(shù)的類(lèi)型為復(fù)合數(shù)據(jù)類(lèi)型,如:數(shù)組,類(lèi)。這時(shí),實(shí)際參數(shù)的值與形式參數(shù)實(shí)際上是同一個(gè)值,即當(dāng)形參變化時(shí),實(shí)參的值也隨之變化。4.4重載
重載是在同一個(gè)類(lèi)中,可以定義相同名字的多個(gè)方法。但是它們的參數(shù)表決不相同,即方法擁有的參數(shù)的數(shù)量、類(lèi)型和參數(shù)順序不同。這樣,在進(jìn)行方法調(diào)用時(shí),通過(guò)參數(shù)表來(lái)匹配相應(yīng)的方法,實(shí)現(xiàn)需要的功能。
GraphicArea.java
構(gòu)造方法的重載
一個(gè)類(lèi)中的構(gòu)造方法可以實(shí)現(xiàn)重載,即可以定義多個(gè)相同方法名,但參數(shù)表不同的構(gòu)造方法,分別對(duì)對(duì)象實(shí)現(xiàn)不同程度的初始化。重載構(gòu)造方法的主要目的是使對(duì)象具有不同的初始值,為類(lèi)對(duì)象的初始化提供方便。
this的使用Person.java4.5訪問(wèn)控制符
訪問(wèn)控制符用在類(lèi)、域和方法定義中,用來(lái)規(guī)定類(lèi)、域和方法是否可以被外界訪問(wèn)和調(diào)用的修飾符。訪問(wèn)控制符規(guī)定的權(quán)限共有四個(gè):public、private、protected和缺省的修飾符(即沒(méi)有定義訪問(wèn)控制符)。
publicpublic的英文意思是“公有的、公共的”,它不僅可以修飾類(lèi),還可以修飾變量和方法。注意程序中有多個(gè)類(lèi)的時(shí)候,最多只能有一個(gè)類(lèi)被public修飾,程序名必須命名為public修飾的類(lèi)名
Functransfer1.java當(dāng)用public修飾成員變量和方法時(shí),變量和方法可以被任何程序直接訪問(wèn)和修改。但這不利于保證數(shù)據(jù)的一致性,造成安全性和可靠性的下降。
private修飾符
在域和方法前面添加private修飾符,說(shuō)明域和方法是私有的,只能被定義它們的類(lèi)訪問(wèn)和調(diào)用。其它任何類(lèi)都不能獲取私有域和私有方法。
Person.java
protected修飾符
關(guān)鍵字protected修飾的域和方法只能被以下三種類(lèi)訪問(wèn)和調(diào)用:域和方法所在的類(lèi)。同一個(gè)包內(nèi)的其它類(lèi)。其它包(package)中該類(lèi)的子類(lèi)。
缺省的修飾符
如果一個(gè)類(lèi)、域和方法前面沒(méi)有被訪問(wèn)控制符修飾,說(shuō)明它具有缺省的訪問(wèn)控制特性:域和方法所在的類(lèi)。同一個(gè)包內(nèi)的其它類(lèi)。4.6其它修飾符
this修飾符
static修飾符
final修飾符
this修飾符this用來(lái)在一個(gè)成員函數(shù)內(nèi)部指向當(dāng)前的對(duì)象,即this代表了當(dāng)前對(duì)象的一個(gè)引用。通過(guò)對(duì)象引用可以地訪問(wèn)與修改對(duì)象的域、方法。this的使用:局部變量、成員函數(shù)的參數(shù)和實(shí)例變量的名字相同時(shí),用this+成員變量可以進(jìn)行區(qū)分。調(diào)用重載的構(gòu)造方法。this(參數(shù)表);類(lèi)中方法和成員變量前面都可以添加this。this不能用在靜態(tài)方法中。static修飾符關(guān)鍵字static的英文意思是“靜態(tài)的”。它可以修飾變量、方法和復(fù)合語(yǔ)句。
static修飾的域(成員變量)稱為類(lèi)的靜態(tài)域。靜態(tài)域存儲(chǔ)在類(lèi)的內(nèi)存區(qū)域單元中,是屬于整個(gè)類(lèi)的成員變量;由關(guān)鍵字static修飾的方法稱為靜態(tài)方法。static方法是屬于整個(gè)類(lèi)的方法,對(duì)整個(gè)類(lèi)而言是共享的。靜態(tài)初始化就是由static修飾的復(fù)合語(yǔ)句,用來(lái)完成靜態(tài)變量的初始化工作。
靜態(tài)域的應(yīng)用classTestStaticFunc{staticintx=6;//非靜態(tài)變量
publicint
getx(){returnx;}publicstaticvoidmain(String[]a){
System.out.println(TestStaticFunc.x);
System.out.println(TestStaticFunc.getx());}}靜態(tài)方法靜態(tài)方法具有以下特點(diǎn):靜態(tài)方法是屬于整個(gè)類(lèi)的,在內(nèi)存中分配公共的內(nèi)存空間。而非static方法是屬于某個(gè)對(duì)象的方法,只有在對(duì)象創(chuàng)建時(shí),才為該對(duì)象的方法分配內(nèi)存空間靜態(tài)方法又稱為類(lèi)方法,它直接不能操縱和處理類(lèi)的非靜態(tài)的成員變量,只能處理屬于整個(gè)類(lèi)的成員變量,也就是靜態(tài)域。調(diào)用靜態(tài)方法時(shí),可以不用創(chuàng)建對(duì)象,而直接使用類(lèi)名作為前綴。TestStaticFunc.javaclassTestStaticFunc{
intx;//非靜態(tài)變量
staticint
getx(){returnx;}staticvoidsetx(intt){x=t;}}靜態(tài)初始化TheStatic.
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 返家鄉(xiāng)安全培訓(xùn)記錄內(nèi)容課件
- 達(dá)沃斯介紹教學(xué)課件
- 邊坡治理安全教育培訓(xùn)課件
- 《排污許可證申請(qǐng)與核發(fā)技術(shù)規(guī)范 工業(yè)固體廢物和危險(xiǎn)廢物治理(HJ 1033-2019)》技術(shù)規(guī)范解讀及審核要點(diǎn)
- 車(chē)隊(duì)消防安全培訓(xùn)材料課件
- 麻醉藥品精神藥品培訓(xùn)考核試題及答案
- 《廣播和電視》物理授課課件
- 酒店員工請(qǐng)假制度
- (2025)Java開(kāi)發(fā)工程師年度項(xiàng)目攻堅(jiān)與代碼優(yōu)化工作總結(jié)(2篇)
- 車(chē)間級(jí)安全培訓(xùn)周期課件
- 2026長(zhǎng)治日?qǐng)?bào)社工作人員招聘勞務(wù)派遣人員5人備考題庫(kù)完美版
- 護(hù)理核心制度內(nèi)容精要
- 閱讀理解體裁與命題方向(復(fù)習(xí)講義)-2026年春季高考英語(yǔ)(上海高考專(zhuān)用)
- 俱樂(lè)部轉(zhuǎn)讓合同模板(3篇)
- 光伏系統(tǒng)的安裝工程監(jiān)理實(shí)施細(xì)則
- 教練員勞務(wù)合同范本
- 2025巴彥淖爾市農(nóng)墾(集團(tuán))有限公司招聘37人備考題庫(kù)含答案解析(奪冠)
- 貴港市利恒投資集團(tuán)有限公司關(guān)于公開(kāi)招聘工作人員參考題庫(kù)附答案
- 腰椎OLIF手術(shù)課件
- 2025西藏林芝市消防救援支隊(duì)政府專(zhuān)職消防員招錄8人備考題庫(kù)附答案解析
- 2025年農(nóng)業(yè)投資入股協(xié)議(生態(tài))
評(píng)論
0/150
提交評(píng)論