版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第三節(jié)抽象、封裝與類第1頁,共66頁。面向?qū)ο笏枷氤橄笈c封裝Java的類定義和使用類屬性方法引用類型
第2頁,共66頁。1.面向?qū)ο笏枷朊嫦蜻^程的程序:模擬問題的解決過程。數(shù)據(jù)結(jié)構(gòu)、算法是面向過程問題求解的核心組成。面向過程的問題求解可以精確、完備地描述具體的求解過程,但卻不足以把一個(gè)包含了多個(gè)相互關(guān)聯(lián)的過程的復(fù)雜系統(tǒng)表述清楚。面向?qū)ο蟮某绦颍耗M描述系統(tǒng)本身,包括系統(tǒng)的組成、系統(tǒng)的各種可能狀態(tài)、系統(tǒng)中可能產(chǎn)生的各種過程與過程引起的系統(tǒng)狀態(tài)切換。關(guān)心所有這些過程的整體,不僅僅是孤立的單個(gè)過程。面向?qū)ο蟮某绦蛟O(shè)計(jì)語言的出發(fā)點(diǎn):直接描述問題域中客觀存在的事物以及它們之間的關(guān)系。第3頁,共66頁。1.面向?qū)ο笏枷朊嫦驅(qū)ο蟮某绦蛟O(shè)計(jì)語言:客觀世界是由一些具體的事物構(gòu)成的,每個(gè)事物都具有自己的一組靜態(tài)特征(屬性)和一組動(dòng)態(tài)特征(行為)。面向?qū)ο蟮某绦蛟O(shè)計(jì)語言把客觀世界的這一事實(shí)映射到計(jì)算機(jī)語言中,把客觀世界中的事物抽象成對(duì)象(Object),用一組數(shù)據(jù)描述該對(duì)象的靜態(tài)特征(屬性,稱為數(shù)據(jù)成員),用一組方法來刻畫該對(duì)象的動(dòng)態(tài)特征(行為)。第4頁,共66頁?,F(xiàn)實(shí)生活中的實(shí)體計(jì)算機(jī)中的對(duì)象的原型aCar{color_number=red;door_number=2;
intspeed=200;
voidbrake(){…}voidspeedUp(){…};voidslowDown(){…}}
第5頁,共66頁。1.面向?qū)ο笏枷朊嫦驅(qū)ο蟮某绦蛟O(shè)計(jì)語言:客觀世界中的事物既具有特殊性又具有共同性,人類在認(rèn)識(shí)客觀世界過程中通常根據(jù)事物的共同性把相似的事物歸結(jié)為某些類。例如所有的汽車和某一輛汽車之間的關(guān)系。OOPL用類(Class)來表示一組具有相同屬性和方法的對(duì)象。第6頁,共66頁。classCar{intcolor_number;intdoor_number;
intspeed;
voidbrake(){…}voidspeedUp(){…};voidslowDown(){…}}
現(xiàn)實(shí)生活中的對(duì)象1現(xiàn)實(shí)生活中的對(duì)象2aCar{color_number=red;door_number=2;
intspeed=200;voidbrake(){…}voidspeedUp(){…};voidslowDown(){…}}
bCar{color_number=blue;door_number=2;
intspeed=300;
voidbrake(){…}voidspeedUp(){…};voidslowDown(){…}}
第7頁,共66頁。抽象實(shí)例化對(duì)象:小王靜態(tài)特征:小王女講師
890.00動(dòng)態(tài)特征:授課評(píng)職稱調(diào)工資屬性值執(zhí)行的操作方法名屬性類:教師屬性:姓名性別職稱工資服務(wù):授課評(píng)職稱調(diào)工資第8頁,共66頁。1.面向?qū)ο笏枷朊嫦驅(qū)ο蟮某绦蛟O(shè)計(jì)語言:在同一類事物中,每個(gè)事物既具有同類的共同性,又具有自己的特殊性。OOPL用父類與子類來描述這一事實(shí):在父類中描述事物的共性,通過父類派生(Derive)子類的機(jī)制來體現(xiàn)事物的個(gè)性??紤]同類事物中每個(gè)事物的特殊性時(shí),可由這個(gè)父類派生子類,子類可以繼承(Inheritance)父類的共同性又具有自己的特殊性。第9頁,共66頁。1.面向?qū)ο笏枷朕I車卡車吊車車載客人數(shù),后備箱容量載重量classTruckextendsCar{intload;}
第10頁,共66頁。1.面向?qū)ο笏枷朊嫦驅(qū)ο蟮某绦蛟O(shè)計(jì)語言:客觀世界中的事物是一個(gè)獨(dú)立的整體,它的許多內(nèi)部實(shí)現(xiàn)細(xì)節(jié)是外部不關(guān)心的。
例如,對(duì)于一個(gè)只負(fù)責(zé)開車的駕駛員來說,他可能根本不知道他所駕駛的這輛汽車內(nèi)部用了多少根螺釘或幾米導(dǎo)線,以及它們是怎樣組裝的。OOPL用封裝(Encapsulation)機(jī)制把對(duì)象的屬性和方法結(jié)合為一個(gè)整體,屏蔽了對(duì)象的內(nèi)部細(xì)節(jié)。第11頁,共66頁。classCar{intcolor_number;intdoor_number;
intspeed;
voidbrake(){…}voidspeedUp(){…};voidslowDown(){…}}classCar{intcolor_number;intdoor_number;
intspeed;
voidbrake(){…}voidspeedUp(){…};voidslowDown(){this.speed--;}}publicClassUseCar{publicstaticvoidmain(StringArgs[]){Carobj=newCar();obj.slowDown();}}第12頁,共66頁。1.面向?qū)ο笏枷朊嫦驅(qū)ο蟮某绦蛟O(shè)計(jì)語言:客觀世界中的一個(gè)事物與其他事物之間存在某種行為上的聯(lián)系。例如,一輛行駛中的汽車當(dāng)看到紅色信號(hào)燈時(shí)要?jiǎng)x車停止,OOPL便通過消息連接來表示對(duì)象之間的這種動(dòng)態(tài)聯(lián)系。classCar{intcolor_number;intdoor_number;intspeed;
voidbrake(){…}voidspeedUp(){…};voidslowDown(){…}}classLight{booleanisRed=true;booleanisGreen;booleanisYellow;voidchangeLight(){…}}classTransportation{publicstaticvoidmain(…){CaraCar=…;
LightaLight=…;aLight.changeLight();if(aLight.isRed)aCar.brake();}}第13頁,共66頁。1.面向?qū)ο笏枷朊嫦驅(qū)ο蟮某绦蛟O(shè)計(jì)語言:客觀世界中較為復(fù)雜的事物往往是由其他一些比較簡(jiǎn)單的事物構(gòu)成的,例如,一輛自行車是由車架、車輪、把手等構(gòu)成的,OOPL提供了描述這種組成關(guān)系的功能。
面向?qū)ο蟮木幊陶Z言使程序直接地反映客觀世界的本來面目,并且使程序員能夠運(yùn)用人類認(rèn)識(shí)事物所采用的一般思維方法來進(jìn)行軟件開發(fā)。第14頁,共66頁。面向?qū)ο笏枷氤橄笈c封裝Java的類定義和使用類屬性方法引用類型
第15頁,共66頁。2.抽象與封裝Java中,除了基本數(shù)據(jù)類型外,還有由用戶定義并實(shí)現(xiàn)的復(fù)合數(shù)據(jù)類型——類。在Java中,一切都是對(duì)象,任何事物都是對(duì)象。不同的對(duì)象常常有一些共性,把這些共性抽象出來就是類;類對(duì)這些屬性和行為進(jìn)行封裝,就成為類的屬性和方法。將一個(gè)抽象的類具體化,也就是類的實(shí)例化,即生成該類的一個(gè)對(duì)象。第16頁,共66頁。2.抽象與封裝數(shù)據(jù)抽象的例子:處理有關(guān)銀行日常業(yè)務(wù)的問題,最核心的問題就是所有的資金、賬目往來。根據(jù)與此核心問題有關(guān)的操作,可以建立一個(gè)表示賬戶的抽象數(shù)據(jù)類型。處理銀行人力資源的問題,則系統(tǒng)最核心的問題是銀行職員的信息,如工號(hào)、職位、入職時(shí)間,以及職員的出勤、入職離職、升職降職、請(qǐng)銷假等事件,而不是銀行的經(jīng)營業(yè)務(wù),這時(shí)建立的則是表示職員的抽象數(shù)據(jù)類型。第17頁,共66頁。2.抽象與封裝封裝:利用抽象數(shù)據(jù)類型將數(shù)據(jù)和基于數(shù)據(jù)的操作封裝在一起,數(shù)據(jù)被保護(hù)在抽象數(shù)據(jù)類型的內(nèi)部,系統(tǒng)的其他部分只有通過包裹在數(shù)據(jù)外面的操作,才能夠與這個(gè)抽象數(shù)據(jù)類型交互。 例如:工程師要組裝一臺(tái)電腦,他將各種電腦設(shè)備組裝起來。如果需要聲卡時(shí),不需要用原始的集成電路芯片和材料自己去做,而是去電腦公司買一個(gè)符合某種規(guī)格的聲卡。工程師所關(guān)心的是聲卡的功能,并不關(guān)心聲卡內(nèi)部的工作原理,因?yàn)槁暱ㄊ怯呻娮訌S商所提供,是自成一體的。這就是封裝性——無需知道封裝單元內(nèi)部是如何工作的。第18頁,共66頁。2.抽象與封裝 在面向?qū)ο笳Z言中,抽象數(shù)據(jù)類型即是“類”,每個(gè)類里都封裝了相關(guān)的數(shù)據(jù)和操作。例如,在銀行日常業(yè)務(wù)系統(tǒng)中,建立了“賬戶”類把賬戶金額和交易情況封裝在類的內(nèi)部。好處:安全:系統(tǒng)的其他部分不能直接獲取或改變這些數(shù)據(jù),只有通過調(diào)用類內(nèi)的方法才能做到,保證數(shù)據(jù)的安全。如調(diào)用查看余額的方法來獲知賬戶的金額,調(diào)用存取款的方法來改變金額??芍赜茫悍庋b使得類成為功能明確、接口單一、可在各種合適的環(huán)境下都能獨(dú)立工作的有機(jī)整體,可以直接或間接地用于其它的應(yīng)用系統(tǒng),縮短開發(fā)周期和降低各種費(fèi)用。 例如,在“銀行日常業(yè)務(wù)系統(tǒng)”中使用的“賬戶”類,可以應(yīng)用在業(yè)務(wù)性質(zhì)相似的保險(xiǎn)公司投保理賠管理系統(tǒng)或者證券公司的證券交易系統(tǒng)中。第19頁,共66頁。面向?qū)ο笏枷氤橄笈c封裝Java的類定義和使用類屬性方法引用類型
第20頁,共66頁。3.Java的類 Java程序設(shè)計(jì)就是定義類的過程。Java中的類有兩種:系統(tǒng)自帶的類
系統(tǒng)定義好的類,即Java類庫中的類,用戶可以直接使用。用戶自定義的類 用戶針對(duì)具體問題來定義的類,也就是Java程序設(shè)計(jì)的過程。第21頁,共66頁。3.Java的類系統(tǒng)定義的類:即Java類庫中的類。Java類庫:類庫是Java語言的重要組成部分,是一組由軟件供應(yīng)商編寫好的Java類,每個(gè)類通常對(duì)應(yīng)一種特定的基本功能和任務(wù)。用戶在編寫自己的Java程序時(shí)可以直接利用這些現(xiàn)成的類庫,不需要從頭編寫。Java的類庫大部分是由SUN公司提供的。根據(jù)實(shí)現(xiàn)功能的不同,系統(tǒng)定義類可以劃分成不同的集合。每個(gè)集合是一個(gè)包,合稱為類庫。Java的類庫是系統(tǒng)提供的已實(shí)現(xiàn)的標(biāo)準(zhǔn)類的集合,可以幫助用戶方便、快捷地開發(fā)Java程序。第22頁,共66頁。3.Java的類(1)java.lang包:Java語言的核心類庫,包含了運(yùn)行Java程序必不可少的系統(tǒng)類,如基本數(shù)據(jù)類型、基本數(shù)學(xué)函數(shù)、字符串處理、線程、異常處理類等。每個(gè)Java程序運(yùn)行時(shí),系統(tǒng)都會(huì)自動(dòng)地引入java.lang包,所以這個(gè)包的加載是缺省的。(2)
java.io包:Java語言的標(biāo)準(zhǔn)輸入/輸出類庫,包含了實(shí)現(xiàn)Java程序與操作系統(tǒng)、用戶界面以及其他Java程序做數(shù)據(jù)交換所使用的類,如基本輸入/輸出流、文件輸入/輸出流、過濾輸入/輸出流、管道輸入/輸出流、隨機(jī)輸入/輸出流等。凡是需要完成與操作系統(tǒng)有關(guān)的較底層的輸入輸出操作的Java程序,都要用到j(luò)ava.io包。(3)
java.util包:包括了Java語言中的一些低級(jí)的實(shí)用工具,如處理時(shí)間的Date類,處理變長(zhǎng)數(shù)組的Vector類,實(shí)現(xiàn)棧和雜湊表的Stack類和HashTable類等,使用它們開發(fā)者可以更方便快捷地編程。第23頁,共66頁。3.Java的類(4)java.awt包:用來構(gòu)建圖形用戶界面(GUI)的類庫,包括了許多界面元素和資源,主要在三個(gè)方面提供界面設(shè)計(jì)支持:低級(jí)繪圖操作,如Graphics類等;圖形界面組件和布局管理,如Checkbox類、Container類、LayoutManager接口等;以及界面用戶交互控制和事件響應(yīng),如Event類。利用java.awt包,開發(fā)人員可以很方便地編寫出美觀、方便、標(biāo)準(zhǔn)化的應(yīng)用程序界面。(5)java.awt.event包:使得程序可以用不同的方式來處理不同類型的事件,使每個(gè)圖形界面的元素本身可以擁有處理它上面事件的能力。(6)java.applet包:實(shí)現(xiàn)運(yùn)行于瀏覽器中的JavaApplet,包含幾個(gè)接口和一個(gè)重要的類:java.applet.Applet。第24頁,共66頁。3.Java的類(7)包:實(shí)現(xiàn)網(wǎng)絡(luò)功能。如實(shí)現(xiàn)套接字通信的Socket類、ServerSocket類;編寫用戶自己的Telnet、FTP、郵件服務(wù)等實(shí)現(xiàn)網(wǎng)上通信的類;用于訪問Internet上資源和進(jìn)行CGI網(wǎng)關(guān)調(diào)用的類,如URL等。利用包中的類,開發(fā)者可以編寫自己的具有網(wǎng)絡(luò)功能的程序。(8)java.sql包:實(shí)現(xiàn)JDBC,使Java程序能夠訪問不同種類的數(shù)據(jù)庫,如Oracle,Sybase,DB2,SQLServer等。只要安裝了合適的驅(qū)動(dòng)程序,同一個(gè)Java程序不需修改就可以存取、修改這些不同的數(shù)據(jù)庫中的數(shù)據(jù)。JDBC的這種功能,再加上Java程序本身具有的平臺(tái)無關(guān)性,大大拓寬了Java程序的應(yīng)用范圍,尤其是商業(yè)應(yīng)用的適用領(lǐng)域。第25頁,共66頁。3.Java的類(9)java.rmi包 實(shí)現(xiàn)RMI功能。利用RMI功能,用戶程序可以在遠(yuǎn)程計(jì)算機(jī)(服務(wù)器)上創(chuàng)建對(duì)象,并在本地計(jì)算機(jī)(客戶機(jī))上使用這個(gè)對(duì)象。(10)java.security包 對(duì)Java程序加密,提供更完善的Java程序安全性控制和管理。第26頁,共66頁。第27頁,共66頁。3.Java的類使用類庫中系統(tǒng)定義的類:繼承系統(tǒng)類:在用戶程序里創(chuàng)建系統(tǒng)類的子類,例如每個(gè)JavaApplet的主類都是java.applet包中的Applet類的子類。創(chuàng)建系統(tǒng)類的對(duì)象:例如在圖形界面程序中要接收用戶的輸入,可以創(chuàng)建一個(gè)系統(tǒng)類TextField類的對(duì)象來進(jìn)行。直接使用系統(tǒng)類:例如向系統(tǒng)標(biāo)準(zhǔn)輸出輸出字符串時(shí)使用的方法System.out.println()就是系統(tǒng)類System的靜態(tài)屬性out的方法。第28頁,共66頁。importjava.applet.*;importjava.awt.*;importjava.awt.event.*;publicclassAppletInOutextendsAppletimplementsActionListener{
Labelprompt;
TextFieldinput,output; publicvoidinit() { prompt=newLabel("請(qǐng)輸入您的名字:"); input=newTextField(6); output=newTextField(20); add(prompt); add(input); add(output); input.addActionListener(this); } publicvoidactionPerformed(ActionEvente) { output.setText(input.getText()+",歡迎你!"); }}繼承系統(tǒng)類創(chuàng)建系統(tǒng)的類對(duì)象導(dǎo)入系統(tǒng)類第29頁,共66頁。3.Java的類 使用系統(tǒng)類的前提條件:該系統(tǒng)類是用戶程序可見的類。為此用戶程序需要用import語句引入它所用到的系統(tǒng)類或系統(tǒng)類所在的包。 例如:
分別引入java.awt包和java.awt.event包的所有類。importjava.awt.*;importjava.awt.event.*;第30頁,共66頁。面向?qū)ο笏枷氤橄笈c封裝Java的類定義和使用類屬性方法引用類型
第31頁,共66頁。4.在Java中定義和使用類 系統(tǒng)定義的類實(shí)現(xiàn)了許多常見的功能,但是在程序設(shè)計(jì)過程中,程序員仍然需要針對(duì)特定問題的特定邏輯來定義自己的類。 用戶程序定義自己的類有定義類頭和定義類體兩個(gè)步驟,其中類體又由屬性和方法組成。第32頁,共66頁。publicclassPhoneCard{longcardNumber;privateintpassword;doublebalance;StringconnectNumber;booleanconnected;booleanperformConnection(longcn,intpw) { if(cn==cardNumber&&pw==password) {connected=true; returntrue;} else{connected=false; returnfalse; }}doublegetBalance(){ if(connected) returnbalance; else return-1;}voidperformDial(){ if(connected) balance-=0.5;}}類頭靜態(tài)特征--屬性動(dòng)態(tài)特征--方法類體類定義第33頁,共66頁。4.在Java中定義和使用類定義類:即聲明類。定義類的語法為: 其中,class關(guān)鍵字標(biāo)明此定義為類,中括號(hào)里的內(nèi)容為可選內(nèi)容。例:publicclassAppletInOutextendsApplet implementsActionListener[類修飾符]class類名[extends父類名][implements接口名序列]第34頁,共66頁。4.在Java中定義和使用類類修飾符:abstract:抽象類,說明該類不能被實(shí)例化。final:最終類,說明該類不能被繼承,即沒有子類。public:公共類,說明該類可以被所有的類訪問和引用。[類修飾符]class類名[extends父類名][implements接口名序列]第35頁,共66頁。4.在Java中定義和使用類抽象類:沒有具體對(duì)象的概念類,表示一個(gè)抽象的概念,不能實(shí)例化。如:“動(dòng)物”,多細(xì)胞生物,有固定的身體結(jié)構(gòu),可生長(zhǎng)、運(yùn)動(dòng)、發(fā)聲等等“人”是一種“動(dòng)物”“馬”是一種“動(dòng)物”“鳥”是一種“動(dòng)物” ……抽象類的作用:表示抽象的概念;建立類之間的關(guān)系,在產(chǎn)生子類的同時(shí)為子類定義好某些特定的屬性和方法不存在某個(gè)動(dòng)物,既不是人,也不是馬,又不是鳥,….第36頁,共66頁。4.在Java中定義和使用類最終類:final修飾,不能被繼承,即沒有子類。 通常是一些有固定作用、用來完成某種標(biāo)準(zhǔn)功能的類。 例如:第37頁,共66頁。4.在Java中定義和使用類類體:定義了該類所有的屬性和該類所提供的方法。定義類體的語法:{[修飾符]變量類型屬性名1;[修飾符]變量類型屬性名2;
……[修飾符]返回類型方法名1(參數(shù)列表)throw[異常列表]{//方法體}[修飾符]返回類型方法名2(參數(shù)列表)throw[異常列表]{//方法體}
……}第38頁,共66頁。4.在Java中定義和使用類使用類:創(chuàng)建該類的對(duì)象。格式:含義:首先說明新建對(duì)象所屬的類名,然后說明新建對(duì)象的名字,最后用new為新建對(duì)象開辟內(nèi)存空間,并調(diào)用構(gòu)造函數(shù)對(duì)對(duì)象進(jìn)行初始化。 像聲明變量需要為變量開辟內(nèi)存空間保存數(shù)據(jù)一樣,創(chuàng)建對(duì)象也需要為對(duì)象開辟內(nèi)存空間保存該對(duì)象的數(shù)據(jù)。例:PhoneCardmyCard=newPhoneCard();類名對(duì)象名=new構(gòu)造函數(shù)();第39頁,共66頁。4.在Java中定義和使用類構(gòu)造函數(shù):創(chuàng)建對(duì)象時(shí)將調(diào)用這個(gè)對(duì)象的構(gòu)造函數(shù)完成對(duì)象的初始化工作。聲明變量時(shí)可以用賦值語句為它賦初值,而一個(gè)對(duì)象可能包括若干個(gè)屬性,需要若干個(gè)賦值語句,把若干個(gè)賦初值的語句組合成一個(gè)方法在創(chuàng)建對(duì)象時(shí)一次性同時(shí)執(zhí)行,這個(gè)方法就是構(gòu)造函數(shù)。構(gòu)造函數(shù)的名字與類相同,用new開辟了新建對(duì)象的內(nèi)存空間之后,將調(diào)用構(gòu)造函數(shù)對(duì)新建對(duì)象進(jìn)行初始化。第40頁,共66頁。4.在Java中定義和使用類構(gòu)造函數(shù)是一種特殊的方法:必須與類名相同;沒有返回類型,也不能定義為void;在方法名前面不聲明方法類型,默認(rèn)為public;一個(gè)類可以定義多個(gè)構(gòu)造方法,以參數(shù)的個(gè)數(shù)、類型或排列順序區(qū)分。如果在定義類時(shí)沒有定義構(gòu)造方法,則編譯系統(tǒng)會(huì)自動(dòng)插入一個(gè)無參數(shù)的默認(rèn)構(gòu)造器,這個(gè)構(gòu)造器不執(zhí)行任何代碼;主要作用是完成對(duì)象的初始化工作,把定義對(duì)象時(shí)的參數(shù)傳給對(duì)象的屬性第41頁,共66頁。publicclassPhoneCard{longcardNumber;privateintpassword;doublebalance;StringconnectNumber;booleanconnected;PhoneCard(longcn,intpw,doubleb,Strings){ cardNumber=cn; password=pw; balance=b; connectNumber=s; connected=false; System.out.println(cardNumber);} booleanperformConnection(longcn,intpw) { …… }doublegetBalance(){ ……}voidperformDial(){ …… }}PhoneCardmyCard=newPhoneCard(12345678,1234,50.0,”300”);如果用戶自定義類未定義類的構(gòu)造函數(shù),系統(tǒng)將為這個(gè)類缺省定義一個(gè)空構(gòu)造函數(shù),沒有形式參數(shù),也沒有任何具體語句,不完成任何操作。if(pw==123456){System.out.println(“toosimple”); System.exit(1);}第42頁,共66頁。4.在Java中定義和使用類訪問或調(diào)用某個(gè)對(duì)象的屬性或方法:如:myCard.balance=50.0; myCard.performConnection(1234L,5678);對(duì)象名.屬性名/方法名(參數(shù))第43頁,共66頁。面向?qū)ο笏枷氤橄笈c封裝Java的類定義和使用類屬性方法引用類型
第44頁,共66頁。5.屬性屬性:是類和對(duì)象的靜態(tài)特征,通常描述類的狀態(tài)。定義屬性的語法:變量類型:基本數(shù)據(jù)類型、類、數(shù)組、接口定義屬性的操作就是說明變量或創(chuàng)建對(duì)象的操作。
例:[修飾符]變量類型屬性名;longcardNumber;privateintpassword;doublebalance;StringconnectNumber;booleanconnected;第45頁,共66頁。5.屬性屬性修飾符:public:說明該屬性在任何地方可見private:該屬性只在本類中可見protected:該屬性在本包和子類中可見static:靜態(tài)屬性,該屬性為類的屬性final:該屬性的值在程序執(zhí)行過程中保持不變……[修飾符]變量類型屬性名;第46頁,共66頁。面向?qū)ο笏枷氤橄笈c封裝Java的類定義和使用類屬性方法引用類型
第47頁,共66頁。6.方法方法:類的動(dòng)態(tài)屬性,說明類具有的功能和操作。定義方法的語法:例:[修飾符]返回類型方法名(參數(shù)列表)[throws異常列表]{方法體各語句;}publicstaticvoidmain(String[]args){ PhoneCard200card1=newPhoneCard200(); System.out.println("PhoneCard200的connectNum"); }第48頁,共66頁。6.方法定義方法的目的:定義具有相對(duì)獨(dú)立和常用功能的模塊,使程序結(jié)構(gòu)清晰,利于模塊在不同場(chǎng)合的重復(fù)利用。publicclassPerfectNum{publicstaticvoidmain(Stringargs[]){for(inti=1;i<1000;i++)if(isPerfect(i)) System.out.print(i+String.valueOf('\t'));System.out.println(); }staticbooleanisPerfect(intx){ inty=0; for(inti=1;i<x;i++) if(x%i==0)y+=i; if(y==x)returntrue; elsereturnfalse; }}調(diào)用方法第49頁,共66頁。6.方法方法修飾符:public:共有方法,該方法可被任何類中的方法訪問private:私有方法,只能被本類中的方法訪問protected:可被本類和子類中的方法訪問abstract:抽象方法,必須在子類中重載static:類方法final:最終方法,不能被子類改變(不能重載)native:本地方法synchronized:同步方法[修飾符]返回類型方法名(參數(shù)列表)[throws異常列表]{方法體各語句;}第50頁,共66頁。類、屬性、方法的訪問控制符:限定類、屬性或方法是否可以被程序里的其他部分訪問和調(diào)用。無論修飾符如何定義,一個(gè)類總能夠訪問和調(diào)用它自己的屬性和方法,但是這個(gè)類之外的其他部分能否訪問這個(gè)屬性或方法,要看屬性和方法以及它所屬的類的訪問控制符。類的訪問控制符只有一個(gè)public,屬性和方法的訪問控制符有四個(gè),分別為public、private、protected和“缺省”。第51頁,共66頁。屬性和方法的訪問控制:規(guī)定屬性和方法可否被本類之外的其他類訪問public成員:可以被所有類訪問(需要import)private成員:不能被任何其它類訪問(只能被本類訪問)protected成員:可以被子類、同一包中的類、本類訪問缺省成員:可以被同一包中的類、本類訪問public類中第52頁,共66頁。屬性和方法的訪問控制:規(guī)定了屬性和方法可否被本類之外的其他類訪問public成員:可以被同一包中的類訪問private成員:不能被任何其它類訪問(只能被本類訪問)protected成員:可以被同一包中的類、本類訪問缺省成員:可以被同一包中的類、本類訪問缺省類中第53頁,共66頁。面向?qū)ο笏枷氤橄笈c封裝Java的類定義和使用類屬性方法引用類型
第54頁,共66頁。7引用類型聲明變量: 其中type為變量類型(包括基本數(shù)據(jù)類型和引用類型),varName為變量名,value為初始值?;緮?shù)據(jù)類型:boolean,char,(byte,short,int,long),(float,double)引用類型?typevarName[=value];第55頁,共66頁。7引用類型基本數(shù)據(jù)類型的變量聲明:
intcountX=34;typename第56頁,共66頁。PhoneCard200myCard;
定義了一個(gè)PhoneCard200類的變量(對(duì)象),其名字為myCardnewPhoneCard200();
用new運(yùn)算符開辟了一塊內(nèi)存空間來保存變量的值;然后調(diào)用PhoneCard200的構(gòu)造函數(shù)對(duì)myCard對(duì)象進(jìn)行初始化?“=” publicclassPhoneCard200{longcardNo;privateStringpassword;doublebalance;……booleanperformDial(){…}doublegetBal
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年全球及中國動(dòng)態(tài)圖像分析儀行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國自動(dòng)粉末噴涂系統(tǒng)行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球可生物降解微膠囊解決方案行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球生物分析測(cè)試行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國高壓清洗機(jī)噴槍行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 幼兒園科學(xué)討論活動(dòng)概述模塊二幼兒園科學(xué)探究活動(dòng)講解
- 必殺08 第九、十單元 西半球的國家和極地地區(qū)(綜合題20題)(解析版)
- 猜想02 重難點(diǎn)(70道題25個(gè)重難點(diǎn))【考題猜想】(解析版)
- 2025我國合同法對(duì)合同效力的規(guī)定
- 合法的房屋租賃合同
- 消防維保服務(wù)方案及實(shí)施細(xì)則
- 保衛(wèi)管理員培訓(xùn)課件
- 香港朗文4B單詞及句子
- 數(shù)據(jù)中心運(yùn)維方案
- 小龍蝦啤酒音樂節(jié)活動(dòng)策劃方案課件
- 運(yùn)動(dòng)技能學(xué)習(xí)與控制課件第五章運(yùn)動(dòng)中的中樞控制
- 財(cái)務(wù)部規(guī)范化管理 流程圖
- 蘇教版2023年小學(xué)四年級(jí)數(shù)學(xué)下冊(cè)教學(xué)計(jì)劃+教學(xué)進(jìn)度表
- 斷絕關(guān)系協(xié)議書范文參考(5篇)
- 量子力學(xué)課件1-2章-波函數(shù)-定態(tài)薛定諤方程
- 最新變態(tài)心理學(xué)課件
評(píng)論
0/150
提交評(píng)論