類與對象的基本概念演示文稿_第1頁
類與對象的基本概念演示文稿_第2頁
類與對象的基本概念演示文稿_第3頁
類與對象的基本概念演示文稿_第4頁
類與對象的基本概念演示文稿_第5頁
已閱讀5頁,還剩100頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

類與對象的基本概念演示文稿現在是1頁\一共有105頁\編輯于星期二(優選)類與對象的基本概念現在是2頁\一共有105頁\編輯于星期二2.1編程語言的幾個發展階段1、機器語言如:匯編語言面向機器的語言,低級語言,是計算機處理信息的早期語言特點:程序中的指令都是由0,1組成的序列,稱為“機器指令”優點:深入理解CPU、寄存器等硬件系統原理單片機等硬件系統編程現在是3頁\一共有105頁\編輯于星期二2、過程語言如:C語言、Fortran語言面向過程的語言,高級語言,接近人的“自然語言”特點:程序通常由若干“塊”(過程/函數)組成,每個塊負責完成獨立的功能現在是4頁\一共有105頁\編輯于星期二采用面向過程的編程思想:程序=算法+數據優點:流程清晰執行效率比面向對象程序高適于編寫數據處理類程序及較小程序,如:算法。缺點:處理復雜問題時,邏輯混亂可維護性較差現在是5頁\一共有105頁\編輯于星期二3、面向對象語言如:Java語言、C++語言高級語言,更加符合人的思維模式特點:封裝繼承多態現在是6頁\一共有105頁\編輯于星期二采用面向對象的編程思想:“一切都是對象”程序=對象+消息優點:高可維護性、可擴展性、可復用性、健壯性適于編寫復雜的、較大的程序缺點:執行效率較低現在是7頁\一共有105頁\編輯于星期二封裝將數據和對數據的操作封裝在一個對象中,并且對對象的使用者隱藏數據的實現過程例如:卡車、公共汽車、轎車等可以抽象出其共性:屬性:可乘人數、運行速度、功率、油耗、自重、輪子數目行為(功能):加速、減速、剎車、轉彎面向對象編程三個特性現在是8頁\一共有105頁\編輯于星期二將這些特性封裝在一起,用類描述classcar

{ intnumber; doublespeed; intpower; doubleoilwear; doubleweight; intwheel; publicvoidspeedup(doublespeed){……} publicvoidspeeddown(doublespeed){……} publicvoidbrake(){……} ……}現在是9頁\一共有105頁\編輯于星期二繼承通過抽象,抽取出某一類的多個對象的共同特性,形成“類”子類可以繼承父類的屬性及功能,并能夠擴展例如:自行車、校車都屬于“車”這一類型,并且具有共同的屬性“時速”,可抽象出“車”作為父類現在是10頁\一共有105頁\編輯于星期二class車

double時速class校車

class自行車

class轎車

//自動繼承了“時速”屬性校車(){

時速=90;}//還能擴展屬性和功能boolean有空調;void放音樂(){}現在是11頁\一共有105頁\編輯于星期二多態方法的多態:多個操作(方法)可具有相同的名字,但方法接收的參數必須不同;繼承的多態:同一個操作被不同類型對象調用時,可產生不同的行為。對象的上轉型對象現在是12頁\一共有105頁\編輯于星期二示例:方法的多態class校車

校車(){

時速=90;}校車(天氣wea){if(wea==天氣.雨天)時速=70;elseif(wea==天氣.雪天)

時速=120;}校車(司機who,天氣wea){if(who==司機.張師傅&&wea==天氣.雨天)

時速=120;elseif……}現在是13頁\一共有105頁\編輯于星期二示例:繼承的多態class車

doublecost(){return0;}class校車

doublecost(){return65;}class自行車

doublecost(){return650;}車car=new車();doublecost=car.cost();//cost的值為0車car=new校車();doublecost=car.cost();//cost的值為65車car=new自行車();doublecost=car.cost();//cost的值為650現在是14頁\一共有105頁\編輯于星期二2.2類什么是類?類是組成Java程序的基本要素;類封裝了一類對象的屬性和方法;類是用來定義對象的模板。類的實現包括兩部分:類聲明類體現在是15頁\一共有105頁\編輯于星期二1、類的聲明classPeople{…}類的聲明People為類名現在是16頁\一共有105頁\編輯于星期二2、類體classPeople{…}類體:大括號及其包含內容類體的內容:大括號之間內容現在是17頁\一共有105頁\編輯于星期二聲明形式

[public][abstract|final]class類名稱 [extends父類名稱][implements接口名稱列表]

{

成員變量聲明及初始化; 成員方法聲明及方法體;

}思考:類聲明的作用,需要定義哪些內容,需要明確哪些限制,有無現有代碼可以復用?現在是18頁\一共有105頁\編輯于星期二類體的內容由兩部分構成:變量定義:用來刻畫屬性;方法定義:用來刻畫功能。例如:class

梯形

{

float

上底,下底,高,area;//變量定義部分

float

計算面積(){//方法定義部分

area=(上底+下底)*高/2.0f;

returnarea;}

void

修改高(floath){//方法定義部分高=h;}}現在是19頁\一共有105頁\編輯于星期二鐘表類思考:該類封裝了時分秒狀態屬性和設置時間、顯示時間的功能方法publicclassClock{//成員變量

inthour;intminute;intsecond;//成員方法

publicvoidsetTime(intnewH,intnewM,intnewS){ hour=newH;minute=newM;second=news;}publicvoidshowTime(){ System.out.println(hour+":"+minute+":"+second);}}現在是20頁\一共有105頁\編輯于星期二3、成員變量和局部變量成員變量:變量定義部分定義的變量;局部變量:方法體中定義的變量和方法的參數。例:找出下面類中的成員變量和局部變量class梯形{float上底,下底,高,area;float計算面積(){floatarea=(上底+下底)*高/2.0f;returnarea;}void修改高(floath){

高=h;}}現在是21頁\一共有105頁\編輯于星期二成員變量和局部變量的類型可以是Java

中的任一類型,包括基本類型和引用類型。成員變量在整個類內都有效;局部變量只在定義它的方法內有效。成員變量與其在類體中的書寫位置無關,但不提倡將成員變量定義分散開現在是22頁\一共有105頁\編輯于星期二成員變量分為兩種類型:實例成員變量:簡稱“實例變量”,無“static”修飾類變量:或稱“靜態變量”,有“static”修飾舉例:classPuppy{ String名字;

staticString叫聲="汪汪~~";}實例變量類變量現在是23頁\一共有105頁\編輯于星期二如果局部變量與成員變量名稱相同,則:

成員變量被隱藏(即在該方法中,成員變量功能失效)舉例:classPuppy{ String名字="旺財"; void關門放狗(){ String名字="泰格"; System.out.println(名字+",咬他!"); }}Puppyd=newPuppy();d.關門放狗();運行結果:

泰格,咬他!現在是24頁\一共有105頁\編輯于星期二如果方法參數與成員變量名稱相同,則:

成員變量被隱藏舉例:classPuppy{ String名字="旺財"; void關門放狗(String名字){ System.out.println(名字+",咬他!"); }}Puppyd=newPuppy();d.關門放狗("泰格");運行結果:

泰格,咬他!現在是25頁\一共有105頁\編輯于星期二當方法的局部變量、方法參數與成員

變量的名稱相同時,如果想調用成員變量,必須使用“this”關鍵字this代表調用該方法的當前對象舉例:現在是26頁\一共有105頁\編輯于星期二classPuppy{ String名字="旺財"; void關門放狗(){ String名字="泰格"; System.out.println(名字+",咬他!"); } void關門放狗(String名字){ System.out.println(名字+",咬他!");}}Puppyd=newPuppy();d.關門放狗();d.關門放狗("泰格");運行結果:

泰格,咬他! 泰格,咬他!this.名字this.名字運行結果:

旺財,咬他! 旺財,咬他!現在是27頁\一共有105頁\編輯于星期二聲明格式—格式有很多,這里是成員變量的格式,思考有哪些?

[public

|

protected

|

private]

[static][

final]

變量數據類型變量名1[=變量初值], 變量名2[=變量初值],…;格式說明public、protected、private

為訪問控制符static指明這是一個靜態成員變量final指明變量的值不能被修改成員變量聲明小結:現在是28頁\一共有105頁\編輯于星期二4、方法方法的定義包括兩部分:方法聲明和方法體。void關門放狗(String名字){ System.out.println(名字+",咬他!");}方法體方法聲明現在是29頁\一共有105頁\編輯于星期二方法定義格式

[public|protected|private] [static][final][abstract]

返回類型方法名([參數列表])[throwsexceptionList]

{

方法體

}現在是30頁\一共有105頁\編輯于星期二①方法聲明通常包含:修飾符、方法類型、方法名、參數

publicstatic

void

main(String[]args)方法類型可以是任意的Java類型,void代表該方法無返回值參數的類型也可以是任意的Java類型②方法體通常包含:局部變量定義、Java語句現在是31頁\一共有105頁\編輯于星期二③方法的參數、方法內定義的局部變量

有效范圍問題:方法參數在整個方法內有效,方法內定義的局部變量從它定義的位置之后開始有效;如果局部變量的定義是在一個復合語句中,那么該局部變量的有效范圍是該復合語句;如果局部變量的定義是在一個循環語句中,那么該局部變量的有效范圍是該循環語句?,F在是32頁\一共有105頁\編輯于星期二void看門(Peoplep){

String日志;

if(p.身份=="小偷"){

Strings="小偷來啦!";

報警(); 咬他();

日志+=s; } if(p.身份=="主人"){

日志+="主人來啦!"; for(inti=1;i<=100;i++){

搖尾巴(); } } System.out.println(日志); System.out.println(s); System.out.println(p.身份); System.out.println(i);}有效無效有效無效現在是33頁\一共有105頁\編輯于星期二5、方法重載方法的多態性一個類中可以有多個方法具有相同的名字,但這些方法的參數必須不同,即:或者是參數的個數不同,或者是參數的類型不同。現在是34頁\一共有105頁\編輯于星期二classArea{

floatgetArea(floatr){ return3.14f*r*r; }

doublegetArea(floatx,inty) { returnx*y;}

floatgetArea(inty,floatx){ returnx*y;}

doublegetArea(floatx,floaty,floatz){ return(x*x+y*y+z*z)*2.0;}}參數個數不同參數類型不同現在是35頁\一共有105頁\編輯于星期二注意:方法的返回類型和參數的名字不參與比較,即:即使兩個方法類型不同,也必須保證參數不同。例如:

doublegetArea(floatx,inty){

returnx*y;

}

floatgetArea(floaty,intx){

returnx*y;

}非法!因為兩個方法參數相同。現在是36頁\一共有105頁\編輯于星期二6、構造方法一種特殊方法,它的名字必須與它所在的類的名字完全相同,而且沒有類型,構造方法也可以重載。沒有類型并不是指返回類型是void,其實返回的類型是類本身現在是37頁\一共有105頁\編輯于星期二class梯形{ float上底,下底,高;

梯形(){

上底=60;

下底=100;

高=20; }

梯形(floatx,inty,floath){

上底=x;

下底=y;

高=h; }}名字與類名相同沒有類型重載了兩個構造方法梯形t=new梯形(0.1,100,100);使用構造方法創建了一個對象現在是38頁\一共有105頁\編輯于星期二構造方法用于創建一個對象。構造方法很“特殊”,不能被其他方法調用;只能在初始化一個對象的時候使用從內存分配上講,一個對象通過構造方法初始化結束過后,才得到該對象的內存模型現在是39頁\一共有105頁\編輯于星期二在Java中,類至少需要一個構造方法;

如果類中沒有構造方法,那么在使用該類創建對象時,JVM會為該類自動提供一個無參數的構造方法,稱為默認構造方法。如:

classPuppy{

String名字;

staticString叫聲="汪汪~~";

}Puppyd=newPuppy();調用了默認構造方法,無參數;實際上,默認構造方法無任何代碼現在是40頁\一共有105頁\編輯于星期二注意:如果類定義了一個或者多個構造方法,那么Java不提供默認的構造方法。例如:

class梯形{

float上底,下底,高;

梯形(floatx,inty,floath){

上底=x; 下底=y; 高=h;

}

}梯形t=new梯形(0.1,100,100);梯形t2=new梯形();合法非法現在是41頁\一共有105頁\編輯于星期二構造方法中通常寫一些初始化成員變量的

賦值語句,當然也可以寫其他代碼。例如:

classPuppy{

String名字="旺財";

Puppy() {

System.out.println("旺財來也!");

}

}Puppyd=newPuppy();運行結果:

旺財來也!現在是42頁\一共有105頁\編輯于星期二7、類方法和實例方法類中的方法也可分為實例方法和類方法:不加關鍵字static的是實例方法;加關鍵字static的是類方法構造方法是特殊的方法,不能用static修飾構造方法現在是43頁\一共有105頁\編輯于星期二8、值得注意的問題對成員變量的操作只能放在方法中,在定義類的成員變量時可以同時賦初值,如:

classA{

inta=12;

}

classA{

inta;

a=12;

}合法非法因為:

類體的內容由成員變量定義、

方法定義兩部分組成?,F在是44頁\一共有105頁\編輯于星期二實例方法既能對類變量操作,也能對實例

變量操作;而類方法只能對類變量進行操作。例如:

classA{

inta=12;

staticintb;

voidf(){

a=120;

b=210;

}

staticvoidg(){

a=1;

b=2;

}

}合法非法合法合法現在是45頁\一共有105頁\編輯于星期二實例方法可以調用該類中的其他方法;而類方法

只能調用該類的類方法,不能調用實例方法。例如:

classA{

staticinta;

staticvoidg(){

a=3;

}

voidf(){

g();

}

staticvoidh(){

g();

f();

}

}合法非法合法現在是46頁\一共有105頁\編輯于星期二2.3對象類是創建對象的模板。當使用一個類創建了一個對象時,我們也說該對象是這個類的一個實例。在程序中,同一個類可以創建多個對象?,F在是47頁\一共有105頁\編輯于星期二1、創建對象包括對象聲明和為對象分配內存兩個步驟。(1)對象聲明一般格式為: 類名

對象名;如: People

zhangPing;現在是48頁\一共有105頁\編輯于星期二(2)為對象分配內存使用new運算符和類的構造方法為聲明的對象分配內存new運算符的功能可以理解為:“給我一個新對象”如果類中沒有構造方法,系統會調用默認的構造方法現在是49頁\一共有105頁\編輯于星期二(3)對象的內存模型例子:西游記人物class西游記人物{

float身高,體重; String發型,耳朵,手,腳,嘴巴;

void喊話(Strings){ System.out.println(s);}}執行代碼:

西游記人物豬八戒;//聲明對象

豬八戒=new西游記人物();//分配內存,使用了new運算符和默認構造方法現在是50頁\一共有105頁\編輯于星期二①首先,聲明了一個對象“豬八戒”。西游記人物豬八戒;此時的內存模型如圖所示:NULL豬八戒未分配實體的對象

“空對象”現在是51頁\一共有105頁\編輯于星期二②然后,實例化對象“豬八戒”。豬八戒=new西游記人物();此時,JVM會做兩件事:為“西游記人物”類的“發型”等成員變量分配內存;接著執行構造方法。如果成員變量沒有被初始化,則系統提供默認值。new運算符在為成員變量分配內存后,將返回一個引用給變量“豬八戒”,即:記錄對象的起始地址?,F在是52頁\一共有105頁\編輯于星期二“豬八戒”實例化后的內存模型如圖所示:存儲成員的空間是連續的,因此,對象“豬八戒”內保存的其實是第一個成員變量的首地址豬八戒0.00.0nullnullnullnullnull體重耳朵手腳嘴巴身高發型0xAB3現在是53頁\一共有105頁\編輯于星期二③創建多個不同對象一個類可以通過使用new運算符創建多個不同對象,這些對象將分配不同的內存空間,因此,改變一個對象的成員變量不會影響其他對象的狀態。例如:創建兩個“西游記人物”類型的對象:

西游記人物豬八戒=new西游記人物();

西游記人物孫悟空=new西游記人物();現在是54頁\一共有105頁\編輯于星期二兩個對象實例化后的內存模型如圖所示:豬八戒0.00.0nullnullnullnullnull0xAB3孫悟空0.00.0nullnullnullnullnull0xFA6現在是55頁\一共有105頁\編輯于星期二2、使用對象通過使用運算符“.”,對象可以訪問自己的成員變量或者調用方法。例如:

class西游記人物{

float身高,體重;String發型,耳朵,手,腳,嘴巴;

void喊話(Strings){ System.out.println(s); }

}現在是56頁\一共有105頁\編輯于星期二執行代碼:

西游記人物豬八戒=new西游記人物();

豬八戒.發型="光頭";

豬八戒.喊話("俺老豬五百年前是帥哥!");}訪問成員變量調用方法現在是57頁\一共有105頁\編輯于星期二3、對象的引用和實體用類創建一個對象時,類中的成員變量被分配內存空間,這些內存空間稱做該對象的實體,而對象中存放著引用(即地址)。一個類創建的多個對象,如果具有相同的引用,那么就具有完全相同的實體。

現在是58頁\一共有105頁\編輯于星期二例如:類Point:用x,y坐標表示的點

classPoint{

intx,y;

Point(intx,inty){

this.x=x;

this.y=y;

}

}

現在是59頁\一共有105頁\編輯于星期二執行代碼:Pointp1=newPoint(1,1);Pointp2=newPoint(100,100);p1=p2;p111yx0xAB3p2100100yx0xFF7問題:這部分內存怎么辦?0xFF7現在是60頁\一共有105頁\編輯于星期二沒有實體的對象稱作空對象,空對象不能

使用;如果一個實體不再被任何對象所擁有,則變成了“內存垃圾”;Java有“垃圾回收”機制,周期性的檢測某實體是否已經不再被任何對象所擁有,發現則回收內存?,F在是61頁\一共有105頁\編輯于星期二4、參數傳值當方法被調用時,如果方法有參數,參數必須要實例化,即參數變量必須有具體的值。在Java中,方法的所有參數都是“傳值”的,也就是說,方法中參數變量的值是調用者指定的值的拷貝?,F在是62頁\一共有105頁\編輯于星期二參數傳值的精度轉換問題:對于基本數據類型的參數,向該參數傳遞

的值的精度不可以高于該參數的精度。例如:不可以向int型參數傳遞一個float值,但可以向double型參數傳遞一個float值?,F在是63頁\一共有105頁\編輯于星期二參數傳值對變量的影響:傳遞基本類型的變量由于基本類型變量中保存的是“值”,因此改變的僅僅是值的副本,傳值的變量內容不會改變;傳遞引用類型的變量由于引用類型變量中保存的是“地址”,因此盡管傳遞的是“地址”的副本,但是改變的是“地址”所對應的內存實體,因此變量內容發生改變?,F在是64頁\一共有105頁\編輯于星期二例如:class西游記人物{ double體重;

void設置體重(doublex){

體重=x;

}

}現在是65頁\一共有105頁\編輯于星期二class塑身{

void改變體重(西游記人物p,doublex)

{

x=x-20; p.設置體重(x);

}

}現在是66頁\一共有105頁\編輯于星期二執行代碼:西游記人物八戒=new西游記人物();八戒.設置體重(300.00);西游記人物悟空=new西游記人物();八戒300.00體重0xAB3悟空0.00體重0xFF7現在是67頁\一共有105頁\編輯于星期二執行代碼:塑身帥=new塑身();帥.改變體重(悟空,八戒.體重);

px改變體重@0xF110八戒300.00體重0xAB3悟空0.00體重0xFF7調用方法時,會創建方法棧來保存方法的變量。x=x-20;p.設置體重(x);280.00300.000xFF7280.00現在是68頁\一共有105頁\編輯于星期二2.4Static關鍵字類變量與類方法:用static修飾的成員變量稱為類變量

用static修飾的方法稱為類方法

現在是69頁\一共有105頁\編輯于星期二1、實例變量和類變量的區別一個類通過new運算符可以創建多個對象,每個對象的實例變量將被分配不同的內存空間;而對于類變量,每個對象的類變量都共享同一內存空間,因此,改變其中一個對象的類變量的值,會影響其它對象的這個類變量。現在是70頁\一共有105頁\編輯于星期二從內存分配上來說:實例變量的內存在創建對象時才會分配,不同的對象分配不同地址;類變量的內存在加載類時就創建好了,不管這個類是否創建了對象,類變量地址固定不變?,F在是71頁\一共有105頁\編輯于星期二例如:class西游記人物{

staticString發型;

double體重=70;

西游記人物(Strings,doublex){

發型=s;體重=x;

}

}現在是72頁\一共有105頁\編輯于星期二執行代碼:西游記人物悟空=new西游記人物("毛寸",75);西游記人物沙僧=new西游記人物("溜冰場",90);System.out.println(沙僧.發型);System.out.println(沙僧.體重);System.out.println(悟空.發型);System.out.println(悟空.體重);現在是73頁\一共有105頁\編輯于星期二2、實例方法和類方法的區別實例方法也是在創建對象時才分配入口地址的,但是,后面所創建的對象共享第一個對象創建時生成的入口地址,也就是說,方法的入口地址被所有對象共享。當所有對象都不存在時,實例方法的入口地址才被回收?,F在是74頁\一共有105頁\編輯于星期二而對于類方法,入口地址在加載類時就分

配了,無論類是否創建了對象,該入口地址都可以直接使用(用類名直接調用)。當程序退出時,類方法的入口地址才被回收。現在是75頁\一共有105頁\編輯于星期二2.5this關鍵字this表示“當前對象”。this可以出現在實例方法和構造方法中,但不可以出現在類方法中。this關鍵字出現在類的構造方法中時,代表使用該構造方法所創建的對象。this關鍵字出現在類的實例方法中時,代表正在調用該方法的當前對象?,F在是76頁\一共有105頁\編輯于星期二例如:classA{ intx; voidf(){

this.x=100; }

}執行代碼:Aa1=newA();Aa2=newA();a1.f();a2.f();現在是77頁\一共有105頁\編輯于星期二2.6包包是Java中有效的管理類的一個機制。1、包語句通過關鍵字package聲明包語句。package語句作為Java源文件的第一條語句,指明該源文件定義的類所在的包。package語句的一般格式為:

package包名;現在是78頁\一共有105頁\編輯于星期二如果源程序中省略了package語句,那么:

源文件中定義命名的類被隱含地認為是“無名包”的一部分,即:源文件中定義命名的類在同一個包中,但該包沒有名字包名可以是一個合法的標識符,也可以是若干個標識符加“.”分割而成現在是79頁\一共有105頁\編輯于星期二2、import語句使用import語句可以引入包中的類。例如:引入一個包中的所有類:

importjava.awt.*;引入某個類:

importjava.util.Date;現在是80頁\一共有105頁\編輯于星期二注意:Java會自動載入java.lang包中的所有類,因此不需要顯式的importjava.lang包中包含了系統的核心類,是程序運行必不可少的。如果import引入了整個包中的類,那么會增加編譯時間,但是不會影響程序運行性能,因為Java是動態加載類的?,F在是81頁\一共有105頁\編輯于星期二所謂訪問權限是指對象是否可以通過

“.”運算符操作自己的變量,或使用類中的方法。訪問限制修飾符有private、protected和public,或者可以無修飾符。2.7訪問權限現在是82頁\一共有105頁\編輯于星期二問題:訪問權限有什么用處?用來限制不同類的對象之間訪問成員變量或者調用方法的權限注意:在編寫類的時候,類中的實例方法總是可以訪問該類的成員變量;類方法總是可以操作該類中的類變量,與訪問限制符無關系?,F在是83頁\一共有105頁\編輯于星期二舉例:class教師

{

public

String姓名;

private

double身高;

voidset教師信息(Strings,doubled){

姓名=s;

身高=d; }}對于教師類的某個實例方法可以不受限制的訪問成員變量,與修飾符無關現在是84頁\一共有105頁\編輯于星期二而對于不同的類,訪問存在限制:class教師{

public

String姓名;

private

double身高;

voidset教師信息( Strings, doubled){

姓名=s;

身高=d; }}class學生{

教師小郭子=new教師();

voidset教師信息( Strings, doubled){

小郭子.姓名=s;

小郭子.身高=d;}}若某學生對象想訪問教師對象中的成員:現在是85頁\一共有105頁\編輯于星期二執行以下代碼:學生小張=new學生();小張.set教師信息("馬路殺手",170);出錯!錯誤描述:public修飾的姓名可以修改;private修飾的身高不能訪問!不同類的對象之間,訪問成員變量或方法的權限是由修飾符限制的?,F在是86頁\一共有105頁\編輯于星期二問題:為什么要設置訪問權限?保護數據類封裝了本身特有的成員和方法,其中有一部分是不希望被其他無關的對象訪問的。盡量將數據“私有化”可以盡可能的保護這些數據,使類的職責“分工明確”?,F在是87頁\一共有105頁\編輯于星期二class教師{

public

String姓名;

private

double身高;

voidset教師信息( Strings, doubled){

姓名=s;

身高=d; }}允許其他類的對象訪問只希望“教師”自己的方法來管理現在是88頁\一共有105頁\編輯于星期二1、私有變量和私有方法用private修飾本類中的實例方法可以訪問本類的私有變量和方法只有在本類中創建該類的對象時,這個對象才能訪問自己的私有變量和方法:在類A中創建了類A的對象a,a能訪問自己的私有變量和方法在類B中創建了類A的對象a,則a不能訪問自己的私有變量和方法現在是89頁\一共有105頁\編輯于星期二class教師{

public

String姓名;

private

double身高;

voidset教師信息( Strings, doubled){

姓名=s;

身高=d; }}現在是90頁\一共有105頁\編輯于星期二class教師{

public

String姓名;

private

double身高;

voidset教師信息( Strings, doubled){

教師小郭=new教師();

小郭.姓名=s;

小郭.身高=d; }}class學生{voidset教師信息( Strings, doubled){

教師小郭=new教師();

小郭.姓名=s;

小郭.身高=d;

}}合法非法現在是91頁\一共有105頁\編輯于星期二2、共有變量和共有方法用public修飾即使不是在本類中創建該類的對象,該對象也能訪問自己的共有變量和共有方法在類B中創建了類A的對象a,則a能訪問自己的共有變量和方法現在是92頁\一共有105頁\編輯于星期二class教師{

public

String姓名;

public

double身高;

voidset教師信息( Strings, doubled){

教師小郭=new教師();

小郭.姓名=s;

小郭.身高=d; }}class學生{voidset教師信息( Strings, doubled){

教師小郭=new教師();

小郭.姓名=s;

小郭.身高=d;

}}合法合法現在是93頁\一共有105頁\編輯于星期二可以說,某個對象的public成員允許

在任何類的對象中訪問而不受限制同理,對于一個類的共有類變量,那么在另外一個類中,也能通過類名來操作這個共有類變量?,F在是94頁\一共有105頁\編輯于星期二3、友好變量和友好方法無修飾符修飾的變量和方法稱為友好變量和友好方法,或簡稱“友元”即使不是在本類中創建該類的對象,如果這兩個類在同一個包中,該對象也能訪問自己的友好變量和友好方法在類B中創建了類A的對象a,若類A和類B在同一包中,則a能訪問自己的友元現在是95頁\一共有105頁\編輯于星期二packageguo;class教師{String姓名;double身高;

voidset教師信息( Strings, doubled){

教師

溫馨提示

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

評論

0/150

提交評論