《JAVA程序設(shè)計(jì)》課件-第五章 類_第1頁
《JAVA程序設(shè)計(jì)》課件-第五章 類_第2頁
《JAVA程序設(shè)計(jì)》課件-第五章 類_第3頁
《JAVA程序設(shè)計(jì)》課件-第五章 類_第4頁
《JAVA程序設(shè)計(jì)》課件-第五章 類_第5頁
已閱讀5頁,還剩110頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

用類表示學(xué)生成績(jī)信息JAVA程序設(shè)計(jì)任務(wù)分析用數(shù)組存儲(chǔ)學(xué)生信息時(shí),若每個(gè)學(xué)生有各種類型的信息需要保存,單純用一維或二維數(shù)組很難表示出來,此時(shí),可以使用對(duì)象數(shù)組。相關(guān)知識(shí)與技術(shù)5.1類的定義5.1類的定義一、類和對(duì)象的關(guān)系類是一種復(fù)雜的數(shù)據(jù)類型,它是將數(shù)據(jù)和與數(shù)據(jù)相關(guān)的操作封裝在一起的集合體。對(duì)象是類的實(shí)例。如:把“人”看成是一個(gè)抽象的類,每一個(gè)具體的人就是“人”類中的一個(gè)實(shí)例,即一個(gè)對(duì)象。每個(gè)人的姓名、年齡、身高、體重等特征可作為“人”類中的數(shù)據(jù),吃飯、走路、工作等行為作為“人”類中的方法。對(duì)象與類的關(guān)系就像變量與類型的關(guān)系一樣。5.1類的定義二、類的定義格式1)類的定義格式<類聲明>

{

<類主體>

}格式:類聲明和類主體。分兩部分:5.1類的定義二、類的定義格式1)類的定義格式[<修飾符>]class<類名>稱[extends<超類>][<implements<接口名>]類聲明中包括關(guān)鍵字class,類名及類的屬性。格式為:5.1類的定義二、類的定義格式1)類的定義格式類名不能是Java中的關(guān)鍵字,要符合標(biāo)識(shí)符的規(guī)定動(dòng)作。若類名使用英文字母,習(xí)慣上,類名的第一個(gè)字母是大寫的。如People。類名最好容易識(shí)別,當(dāng)類名由幾個(gè)單詞構(gòu)成,習(xí)慣上,每個(gè)單詞的第一個(gè)字母用大寫。如BeijingTime,HelloChina。注意:5.1類的定義二、類的定義格式1)類的定義格式一部分是變量的定義,用來刻畫屬性;另一部分是方法的定義,用來刻畫行為。類主體用一對(duì)大括號(hào)括起來,其中有兩部分內(nèi)容構(gòu)成:5.1類的定義二、類的定義格式1)類的定義格式類主體用一對(duì)大括號(hào)括起來,其中有兩部分內(nèi)容構(gòu)成:例:一個(gè)“人”類的定義classPeople

{

Stringname;

intage;

doubleheight;

doubleweight;

voidprint()

{

System.out.println("身高:"+height);

}

}5.1類的定義二、類的定義格式2)變量的定義格式Stringname;

intage;例:[<修飾符>]<變量類型><變量名>Java類的狀態(tài)用成員變量來表示。格式如下:5.1類的定義二、類的定義格式intadd(inta,intb)

{intc=a+b;

returnc;

}例:[<修飾符>]<返回值類型><方法名>([參數(shù)列表])[throws<異常類>]

{

<方法體>

}Java類的行為由它的方法實(shí)現(xiàn)。格式如下:3)方法的定義格式5.1類的定義三、變量Java中的變量按其定義的位置不同,分為兩種:成員變量局部變量5.1類的定義三、變量在類體的變量定義部分所定義的變量稱為成員變量局部變量在方法體中定義的變量和方法的參數(shù)稱為5.1類的定義三、變量成員變量和局部變量可以是Java中的任何一種數(shù)據(jù)類型。若成員變量不賦初值,數(shù)值型則為0或0.0,字符型則為,布爾型則為false,對(duì)象則為null。變量名必須符合標(biāo)識(shí)符的命名規(guī)則,習(xí)慣上,如果使用英文字母,則第一個(gè)字母使用小寫;如果由多個(gè)單詞組成,則從第二個(gè)單詞開始的其他單詞的第一個(gè)字母使用大寫。成員變量在整個(gè)類的范圍內(nèi)都有效,而局部變量只在定義它的方法內(nèi)有效。說明5.1類的定義三、變量如果局部變量的名字與成員變量的名字相同,則成員變量被隱藏,即這個(gè)成員變量在這個(gè)方法內(nèi)暫時(shí)效。若想在方法內(nèi)使用和局部變量同名的成員變量,必須使用關(guān)鍵字this。成員變量又分為實(shí)例變量和類變量(也稱靜態(tài)變量)。說明5.1類的定義四、方法方法的定義格式:[<修飾符>]<返回值類型><方法名>([參數(shù)列表])[throws<異常類>]

{

<方法體>

}5.1類的定義四、方法例如:intadd(inta,intb)

{intc=a+b;

returnc;

}5.1類的定義四、方法返回值類型可以是任意的Java數(shù)據(jù)類型,當(dāng)一個(gè)方法不需要返回?cái)?shù)據(jù)時(shí),方法的類型必須是void。方法的參數(shù)是用逗號(hào)隔開的一些變量聲明,可以是任意的Java數(shù)據(jù)類型。方法的名字必須符合標(biāo)識(shí)符的規(guī)定,習(xí)慣上,如果名字使用英文字母,第一個(gè)字母是要使用小寫。如果由多個(gè)單詞構(gòu)成,則從第2個(gè)單詞開始的其他單詞的第1個(gè)字母使用大寫。說明如:floatgetTrangleArea()

voidsetName(Stringname)5.1類的定義四、方法方法體的內(nèi)容包括局部變量的定義和合法的Java語句。方法的參數(shù)在整個(gè)方法內(nèi)有效,方法內(nèi)定義的局部變量從它定義的位置之后開始有效。如果局部變量的定義是在一個(gè)復(fù)合語句中,那么該局部變量的有效范圍是該復(fù)合語句,即僅在該復(fù)合語句中有效,如果局部變量的定義是在一個(gè)循環(huán)語句中,那么該局部變量的有效范圍是該循環(huán)語句,即僅在該循環(huán)語句中有效。說明5.1類的定義五、方法的重載方法重載是多態(tài)性的一種。方法重載就是一個(gè)類中可以有多個(gè)方法具有相同的名字,但這些方法的參數(shù)必須不同,即或者是參數(shù)的個(gè)數(shù)不同,或者是參數(shù)的類型不同。5.1類的定義六、構(gòu)造方法構(gòu)造方法是一種特殊的方法,它的名字必須與它所在的類的名字完全相同,而且沒有類型,構(gòu)造方法也可以重載。5.1類的定義六、構(gòu)造方法例如:classPeople{Stringname;intage;doubleheight;doubleweight;People()5.1類的定義六、構(gòu)造方法例如:{name=“zhangli”;

age=20;

height=1.65;

weight=48;}People(Stringname1,intage1){name=name1;age=age1;

}

}相關(guān)知識(shí)與技術(shù)5.2對(duì)象的創(chuàng)建和使用5.2對(duì)象的創(chuàng)建和使用一、創(chuàng)建對(duì)象類是創(chuàng)建對(duì)象的模板,當(dāng)使用一個(gè)類創(chuàng)建了一個(gè)對(duì)象時(shí),也就說給出了這個(gè)類的一個(gè)實(shí)例。創(chuàng)建對(duì)象包括對(duì)象的聲明和為對(duì)象分配內(nèi)存兩個(gè)步驟。5.2對(duì)象的創(chuàng)建和使用一、創(chuàng)建對(duì)象1)對(duì)象的聲明格式類名對(duì)象名字;如:Peoplewangli,zhangping;5.2對(duì)象的創(chuàng)建和使用一、創(chuàng)建對(duì)象2)為聲明的對(duì)象分配內(nèi)存用new運(yùn)算符和類的構(gòu)造方法為聲明的對(duì)象分配內(nèi)存,如果類中沒有構(gòu)造方法,系統(tǒng)會(huì)調(diào)用默認(rèn)的構(gòu)造方法(默認(rèn)的構(gòu)造方法不帶參數(shù),什么都不做)。如:wangli=newPeople();

zhangping=newPeople("zhangping",19);5.2對(duì)象的創(chuàng)建和使用二、對(duì)象的使用通過成員運(yùn)算符“.”,對(duì)象可以實(shí)現(xiàn)對(duì)變量的訪問和對(duì)方法的調(diào)用。格式:

對(duì)象名.成員變量名

對(duì)象名.方法名(<參數(shù)列表>)5.2對(duì)象的創(chuàng)建和使用三、對(duì)象的引用和實(shí)體當(dāng)用類創(chuàng)建一個(gè)對(duì)象時(shí),類中的成員變量被分配內(nèi)存空間,這些內(nèi)存空間稱為該對(duì)象的實(shí)體,而對(duì)象中存放著引用(地址),以確保實(shí)體由該對(duì)象操作使用。5.2對(duì)象的創(chuàng)建和使用三、對(duì)象的引用和實(shí)體Peoplezhangping;zhangping=newPeople("zhangping",20);null未分配實(shí)體的對(duì)象0XD234zhangping205.2對(duì)象的創(chuàng)建和使用三、對(duì)象的引用和實(shí)體例:若有定義Peoplep1=newPeople("zhang",16),

p2=newPeople("wang",18);0XD234zhang16p10X12ABwang18p25.2對(duì)象的創(chuàng)建和使用三、對(duì)象的引用和實(shí)體若p1=p20XD234zhang16p10XD234p25.2對(duì)象的創(chuàng)建和使用四、方法參數(shù)在Java中,方法的所有參數(shù)都是“傳值”調(diào)用的,例如:

voidf(intx){......}

調(diào)用函數(shù)時(shí),要向x傳遞一個(gè)int值,如:f(y),如果在方法中改變了參數(shù)x的值,不會(huì)影響實(shí)參y的值。方法定義時(shí),方法名后面括弧內(nèi)的參數(shù)稱為形式參數(shù)(簡(jiǎn)稱形參),方法調(diào)用時(shí),方法名后面括弧內(nèi)的參數(shù)稱為實(shí)在參數(shù)(簡(jiǎn)稱實(shí)參)。5.2對(duì)象的創(chuàng)建和使用四、方法參數(shù)1基本數(shù)據(jù)類型做方法參數(shù)當(dāng)形式參數(shù)是基本數(shù)據(jù)類型時(shí),向該參數(shù)傳遞的值的級(jí)別不可以高于該參數(shù)的級(jí)別,如不能向int型參數(shù)傳遞一個(gè)float型值,但可以向它傳遞一個(gè)byte型值。5.2對(duì)象的創(chuàng)建和使用四、方法參數(shù)2Java的引用類型包括對(duì)象、數(shù)組和接口當(dāng)形式參數(shù)是引用類型時(shí),“傳值”傳遞的是變量的引用而不是變量所引用的實(shí)體。如果改變形參變量所引用的實(shí)體,就會(huì)導(dǎo)致實(shí)參變量的實(shí)體發(fā)生同樣的變化,因?yàn)閷?shí)參變量和形參變量具有相同的引用,具有相同的實(shí)體。但是,改變形參變量的引用,不會(huì)改變實(shí)參變量的引用。相關(guān)知識(shí)與技術(shù)5.3static關(guān)鍵字5.3static關(guān)鍵字在定義類時(shí),使用static修飾的變量和方法分別稱為類變量(靜態(tài)變量)和類方法(靜態(tài)方法),沒有使用static修飾的變量和方法稱為實(shí)例變量和實(shí)例方法。一個(gè)類的類成員是屬于這個(gè)類的,而不是屬于這個(gè)類的某個(gè)對(duì)象,它由這個(gè)類所創(chuàng)建的所有對(duì)象共同擁有。對(duì)于類變量,所有對(duì)象的類變量都分配相同的一個(gè)內(nèi)存(實(shí)際上只有一個(gè)),如果該類的一個(gè)對(duì)象改變了類變量的值,會(huì)影響到其它對(duì)象訪問類變量時(shí)的值。5.3static關(guān)鍵字對(duì)于實(shí)例變量,不同對(duì)象的實(shí)例變量將被分配不同的內(nèi)存,一個(gè)對(duì)象改變自己的實(shí)例變量,不會(huì)影響到其他對(duì)象的實(shí)例變量的值。對(duì)于類成員,通常通過類名來訪問,也可以通過對(duì)象來訪問。在類方法中只能訪問類成員,不能訪問實(shí)例成員。相關(guān)知識(shí)與技術(shù)5.4this關(guān)鍵字5.4this關(guān)鍵字this關(guān)鍵字出現(xiàn)在構(gòu)造方法中,代表使用該構(gòu)造方法正在創(chuàng)建的對(duì)象。this代表當(dāng)前對(duì)象,可以出現(xiàn)在實(shí)例方法和構(gòu)造方法中,但不可以出現(xiàn)在類方法中。this關(guān)鍵字出現(xiàn)在實(shí)例方法中,代表正在調(diào)用該方法的當(dāng)前對(duì)象。例:this出現(xiàn)在構(gòu)造方法中。例:this出現(xiàn)在實(shí)例方法中。相關(guān)知識(shí)與技術(shù)5.5成員的訪問權(quán)限5.5成員的訪問權(quán)限創(chuàng)建某類的一個(gè)對(duì)象之后,該對(duì)象通過“.”運(yùn)算符訪問自己的變量、調(diào)用類中的方法時(shí)是有一定的限制的。5.5成員的訪問權(quán)限公有的:public私有的:private保護(hù)的:protectedJava語言中有三種訪問控制修飾符,用來控制類的成員的訪問權(quán)限。5.5成員的訪問權(quán)限一、公有的(public)用public修飾的變量和方法稱為公有變量和公有方法。如:classPeople

{publicStringname;

publicintage;

publicvoidprint(){......}

}5.5成員的訪問權(quán)限一、公有的(public)當(dāng)在任何一個(gè)類中用類People創(chuàng)建了一個(gè)對(duì)象后,該對(duì)象能訪問自己的public變量和調(diào)用public方法。如:classTest

{voidf()

{Peoplep=newPeople();

="zhangsan";

p.age=21;

p.print();

}

}5.5成員的訪問權(quán)限二、私有的(private)用private修飾的變量和方法稱為私有變量和私有方法。如:classPeople

{privateStringname;

privateintage;

privatevoidprint(){......}

}5.5成員的訪問權(quán)限二、私有的(private)當(dāng)在另外一個(gè)類中用類People創(chuàng)建了一個(gè)對(duì)象后,該對(duì)象不能訪問自己的私有變量和調(diào)用私有方法。如:classTest

{voidf()

{Peoplep=newPeople();

="zhangsan";//非法

p.age=21;//非法

p.print();//非法

}

}5.5成員的訪問權(quán)限二、私有的(private)如果一個(gè)類中的某個(gè)成員變量或方法是私有的,那么在另外一個(gè)類中,也不能通過類名來訪問這個(gè)私有變量或調(diào)用這個(gè)私有方法。對(duì)于私有成員變量或方法,只有在本類中創(chuàng)建該類的對(duì)象時(shí),這個(gè)對(duì)象才能訪問自己的私有變量和類中的私有方法。5.5成員的訪問權(quán)限三、友好的(friendly)不用任何修飾符修飾的成員變量和方法稱為友好變量和友好方法。如:classPeople

{Stringname;

intage;

voidprint(){......}

}5.5成員的訪問權(quán)限三、友好的(friendly)當(dāng)在另外一個(gè)類中用類People創(chuàng)建了一個(gè)對(duì)象后,如果這個(gè)類與People類在同一個(gè)包中,那么該對(duì)象能訪問自己的友好成員,也可以通過類名訪問類友好成員。如果這個(gè)類與People類不在同一個(gè)包中,那么該對(duì)象將不能訪問自己的友好成員。5.5成員的訪問權(quán)限四、保護(hù)的(protected)用protected修飾的變量和方法稱為保護(hù)變量和保護(hù)方法。如:classPeople

{protectedStringname;

protectedintage;

protectedvoidprint(){......}

}5.5成員的訪問權(quán)限四、保護(hù)的(protected)當(dāng)在另外一個(gè)類中用類People創(chuàng)建了一個(gè)對(duì)象后,如果這個(gè)類與People類在同一個(gè)包中,那么該對(duì)象能訪問自己的保護(hù)成員,也可以通過類名訪問類保護(hù)成員。如果這個(gè)類與People類不在同一個(gè)包中,那么該對(duì)象將不能訪問自己的保護(hù)成員。5.5成員的訪問權(quán)限五、公有類和友好類若在定義一個(gè)類時(shí),class前面加上public關(guān)鍵字,則稱這個(gè)類為公有類。如果一個(gè)類不加public修飾,則稱這個(gè)類為友好類。如果在另外一個(gè)類中使用友好類創(chuàng)建對(duì)象,要保證它們是在同一個(gè)包中。如:

publicclassA

{......}可以在任何另外一個(gè)類中,使用public類來創(chuàng)建對(duì)象。任務(wù)實(shí)施假定學(xué)生信息有學(xué)號(hào),姓名和成績(jī),定義學(xué)生類如下:classStudentInfo{intscore;Stringname;intnumber;publicStudentInfo(intnumber,Stringname,intscore){ this.number=number; =name; this.score=score;}任務(wù)實(shí)施假定學(xué)生信息有學(xué)號(hào),姓名和成績(jī),定義學(xué)生類如下:publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ =name; } publicintgetNumber(){ returnnumber; } publicvoidsetNumber(intnumber){ this.number=number; }任務(wù)實(shí)施假定學(xué)生信息有學(xué)號(hào),姓名和成績(jī),定義學(xué)生類如下:publicintgetScore(){ returnscore; } publicvoidsetScore(intscore){ this.score=score; }}任務(wù)小結(jié)通過完成任務(wù),要求學(xué)生理解面向?qū)ο蟮幕靖拍?,掌握類和?duì)象的定義方法及使用,熟悉static,this等關(guān)鍵字的用法。5.2對(duì)象的創(chuàng)建和使用一、創(chuàng)建對(duì)象類是創(chuàng)建對(duì)象的模板,當(dāng)使用一個(gè)類創(chuàng)建了一個(gè)對(duì)象時(shí),也就說給出了這個(gè)類的一個(gè)實(shí)例。創(chuàng)建對(duì)象包括對(duì)象的聲明和為對(duì)象分配內(nèi)存兩個(gè)步驟。5.2對(duì)象的創(chuàng)建和使用一、創(chuàng)建對(duì)象1)對(duì)象的聲明格式類名對(duì)象名字;如:Peoplewangli,zhangping;5.2對(duì)象的創(chuàng)建和使用一、創(chuàng)建對(duì)象2)為聲明的對(duì)象分配內(nèi)存用new運(yùn)算符和類的構(gòu)造方法為聲明的對(duì)象分配內(nèi)存,如果類中沒有構(gòu)造方法,系統(tǒng)會(huì)調(diào)用默認(rèn)的構(gòu)造方法(默認(rèn)的構(gòu)造方法不帶參數(shù),什么都不做)。如:wangli=newPeople();

zhangping=newPeople("zhangping",19);5.2對(duì)象的創(chuàng)建和使用二、對(duì)象的使用通過成員運(yùn)算符“.”,對(duì)象可以實(shí)現(xiàn)對(duì)變量的訪問和對(duì)方法的調(diào)用。格式:

對(duì)象名.成員變量名

對(duì)象名.方法名(<參數(shù)列表>)5.2對(duì)象的創(chuàng)建和使用三、對(duì)象的引用和實(shí)體當(dāng)用類創(chuàng)建一個(gè)對(duì)象時(shí),類中的成員變量被分配內(nèi)存空間,這些內(nèi)存空間稱為該對(duì)象的實(shí)體,而對(duì)象中存放著引用(地址),以確保實(shí)體由該對(duì)象操作使用。5.2對(duì)象的創(chuàng)建和使用三、對(duì)象的引用和實(shí)體Peoplezhangping;zhangping=newPeople("zhangping",20);null未分配實(shí)體的對(duì)象0XD234zhangping205.2對(duì)象的創(chuàng)建和使用三、對(duì)象的引用和實(shí)體例:若有定義Peoplep1=newPeople("zhang",16),

p2=newPeople("wang",18);0XD234zhang16p10X12ABwang18p25.2對(duì)象的創(chuàng)建和使用三、對(duì)象的引用和實(shí)體若p1=p20XD234zhang16p10XD234p25.2對(duì)象的創(chuàng)建和使用四、方法參數(shù)在Java中,方法的所有參數(shù)都是“傳值”調(diào)用的,例如:

voidf(intx){......}

調(diào)用函數(shù)時(shí),要向x傳遞一個(gè)int值,如:f(y),如果在方法中改變了參數(shù)x的值,不會(huì)影響實(shí)參y的值。方法定義時(shí),方法名后面括弧內(nèi)的參數(shù)稱為形式參數(shù)(簡(jiǎn)稱形參),方法調(diào)用時(shí),方法名后面括弧內(nèi)的參數(shù)稱為實(shí)在參數(shù)(簡(jiǎn)稱實(shí)參)。5.2對(duì)象的創(chuàng)建和使用四、方法參數(shù)1基本數(shù)據(jù)類型做方法參數(shù)當(dāng)形式參數(shù)是基本數(shù)據(jù)類型時(shí),向該參數(shù)傳遞的值的級(jí)別不可以高于該參數(shù)的級(jí)別,如不能向int型參數(shù)傳遞一個(gè)float型值,但可以向它傳遞一個(gè)byte型值。5.2對(duì)象的創(chuàng)建和使用四、方法參數(shù)2Java的引用類型包括對(duì)象、數(shù)組和接口當(dāng)形式參數(shù)是引用類型時(shí),“傳值”傳遞的是變量的引用而不是變量所引用的實(shí)體。如果改變形參變量所引用的實(shí)體,就會(huì)導(dǎo)致實(shí)參變量的實(shí)體發(fā)生同樣的變化,因?yàn)閷?shí)參變量和形參變量具有相同的引用,具有相同的實(shí)體。但是,改變形參變量的引用,不會(huì)改變實(shí)參變量的引用。5.3static關(guān)鍵字在定義類時(shí),使用static修飾的變量和方法分別稱為類變量(靜態(tài)變量)和類方法(靜態(tài)方法),沒有使用static修飾的變量和方法稱為實(shí)例變量和實(shí)例方法。一個(gè)類的類成員是屬于這個(gè)類的,而不是屬于這個(gè)類的某個(gè)對(duì)象,它由這個(gè)類所創(chuàng)建的所有對(duì)象共同擁有。對(duì)于類變量,所有對(duì)象的類變量都分配相同的一個(gè)內(nèi)存(實(shí)際上只有一個(gè)),如果該類的一個(gè)對(duì)象改變了類變量的值,會(huì)影響到其它對(duì)象訪問類變量時(shí)的值。5.3static關(guān)鍵字對(duì)于實(shí)例變量,不同對(duì)象的實(shí)例變量將被分配不同的內(nèi)存,一個(gè)對(duì)象改變自己的實(shí)例變量,不會(huì)影響到其他對(duì)象的實(shí)例變量的值。對(duì)于類成員,通常通過類名來訪問,也可以通過對(duì)象來訪問。在類方法中只能訪問類成員,不能訪問實(shí)例成員。5.4this關(guān)鍵字this關(guān)鍵字出現(xiàn)在構(gòu)造方法中,代表使用該構(gòu)造方法正在創(chuàng)建的對(duì)象。this代表當(dāng)前對(duì)象,可以出現(xiàn)在實(shí)例方法和構(gòu)造方法中,但不可以出現(xiàn)在類方法中。this關(guān)鍵字出現(xiàn)在實(shí)例方法中,代表正在調(diào)用該方法的當(dāng)前對(duì)象。例:this出現(xiàn)在構(gòu)造方法中。例:this出現(xiàn)在實(shí)例方法中。5.4this關(guān)鍵字this關(guān)鍵字出現(xiàn)在構(gòu)造方法中,代表使用該構(gòu)造方法正在創(chuàng)建的對(duì)象。this代表當(dāng)前對(duì)象,可以出現(xiàn)在實(shí)例方法和構(gòu)造方法中,但不可以出現(xiàn)在類方法中。this關(guān)鍵字出現(xiàn)在實(shí)例方法中,代表正在調(diào)用該方法的當(dāng)前對(duì)象。例:this出現(xiàn)在構(gòu)造方法中。例:this出現(xiàn)在實(shí)例方法中。5.5成員的訪問權(quán)限創(chuàng)建某類的一個(gè)對(duì)象之后,該對(duì)象通過“.”運(yùn)算符訪問自己的變量、調(diào)用類中的方法時(shí)是有一定的限制的。5.5成員的訪問權(quán)限公有的:public私有的:private保護(hù)的:protectedJava語言中有三種訪問控制修飾符,用來控制類的成員的訪問權(quán)限。5.5成員的訪問權(quán)限一、公有的(public)用public修飾的變量和方法稱為公有變量和公有方法。如:classPeople

{publicStringname;

publicintage;

publicvoidprint(){......}

}5.5成員的訪問權(quán)限一、公有的(public)當(dāng)在任何一個(gè)類中用類People創(chuàng)建了一個(gè)對(duì)象后,該對(duì)象能訪問自己的public變量和調(diào)用public方法。如:classTest

{voidf()

{Peoplep=newPeople();

="zhangsan";

p.age=21;

p.print();

}

}5.5成員的訪問權(quán)限二、私有的(private)用private修飾的變量和方法稱為私有變量和私有方法。如:classPeople

{privateStringname;

privateintage;

privatevoidprint(){......}

}5.5成員的訪問權(quán)限二、私有的(private)當(dāng)在另外一個(gè)類中用類People創(chuàng)建了一個(gè)對(duì)象后,該對(duì)象不能訪問自己的私有變量和調(diào)用私有方法。如:classTest

{voidf()

{Peoplep=newPeople();

="zhangsan";//非法

p.age=21;//非法

p.print();//非法

}

}5.5成員的訪問權(quán)限二、私有的(private)如果一個(gè)類中的某個(gè)成員變量或方法是私有的,那么在另外一個(gè)類中,也不能通過類名來訪問這個(gè)私有變量或調(diào)用這個(gè)私有方法。對(duì)于私有成員變量或方法,只有在本類中創(chuàng)建該類的對(duì)象時(shí),這個(gè)對(duì)象才能訪問自己的私有變量和類中的私有方法。5.5成員的訪問權(quán)限三、友好的(friendly)不用任何修飾符修飾的成員變量和方法稱為友好變量和友好方法。如:classPeople

{Stringname;

intage;

voidprint(){......}

}5.5成員的訪問權(quán)限三、友好的(friendly)當(dāng)在另外一個(gè)類中用類People創(chuàng)建了一個(gè)對(duì)象后,如果這個(gè)類與People類在同一個(gè)包中,那么該對(duì)象能訪問自己的友好成員,也可以通過類名訪問類友好成員。如果這個(gè)類與People類不在同一個(gè)包中,那么該對(duì)象將不能訪問自己的友好成員。5.5成員的訪問權(quán)限四、保護(hù)的(protected)用protected修飾的變量和方法稱為保護(hù)變量和保護(hù)方法。如:classPeople

{protectedStringname;

protectedintage;

protectedvoidprint(){......}

}5.5成員的訪問權(quán)限四、保護(hù)的(protected)當(dāng)在另外一個(gè)類中用類People創(chuàng)建了一個(gè)對(duì)象后,如果這個(gè)類與People類在同一個(gè)包中,那么該對(duì)象能訪問自己的保護(hù)成員,也可以通過類名訪問類保護(hù)成員。如果這個(gè)類與People類不在同一個(gè)包中,那么該對(duì)象將不能訪問自己的保護(hù)成員。5.5成員的訪問權(quán)限五、公有類和友好類若在定義一個(gè)類時(shí),class前面加上public關(guān)鍵字,則稱這個(gè)類為公有類。如果一個(gè)類不加public修飾,則稱這個(gè)類為友好類。如果在另外一個(gè)類中使用友好類創(chuàng)建對(duì)象,要保證它們是在同一個(gè)包中。如:

publicclassA

{......}可以在任何另外一個(gè)類中,使用public類來創(chuàng)建對(duì)象。任務(wù)實(shí)施假定學(xué)生信息有學(xué)號(hào),姓名和成績(jī),定義學(xué)生類如下:classStudentInfo{intscore;Stringname;intnumber;publicStudentInfo(intnumber,Stringname,intscore){ this.number=number; =name; this.score=score;}任務(wù)實(shí)施假定學(xué)生信息有學(xué)號(hào),姓名和成績(jī),定義學(xué)生類如下:publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ =name; } publicintgetNumber(){ returnnumber; } publicvoidsetNumber(intnumber){ this.number=number; }任務(wù)實(shí)施假定學(xué)生信息有學(xué)號(hào),姓名和成績(jī),定義學(xué)生類如下:publicintgetScore(){ returnscore; } publicvoidsetScore(intscore){ this.score=score; }}任務(wù)小結(jié)通過完成任務(wù),要求學(xué)生理解面向?qū)ο蟮幕靖拍?,掌握類和?duì)象的定義方法及使用,熟悉static,this等關(guān)鍵字的用法。任務(wù)分析在學(xué)生成績(jī)管理系統(tǒng)中,可以用類來表示學(xué)生基本信息,對(duì)學(xué)生信息的各種處理和運(yùn)算可以用不同的方法來實(shí)現(xiàn)。相關(guān)知識(shí)與技術(shù)5.6

類的繼承一、子類的定義格式:

[類修飾符]class子類名extends父類名

{......

}如:

classStudentextendsPeople

{......

}注:如果一個(gè)類的聲明中沒有使用extends關(guān)鍵字,則這個(gè)類被系統(tǒng)默認(rèn)為是Object類的直接子類。Object是java.lang包中的類。二、類成員的繼承類有兩種重要的成員:成員變量和方法。子類的成員中有一部分是子類自己聲明定義的,另一部分是從它的父類繼承的。二、類成員的繼承子類繼承父類的成員變量:能夠繼承public和protected成員變量。能夠繼承同一包中的默認(rèn)修飾符的成員變量。不能繼承private成員變量。如果子類成員變量與超類同名,則不能繼承。二、類成員的繼承能夠繼承public和protected方法。能夠繼承同一包中的默認(rèn)修飾符的方法。不能繼承private方法。不能繼承超類的構(gòu)造方法。子類繼承父類的方法:如果子類方法與超類方法同名,則不能繼承。(被覆蓋)相關(guān)知識(shí)與技術(shù)5.7成員變量的隱藏和方法的重寫一、成員變量的隱藏子類方法中訪問的也是子類重新定義的這個(gè)成員變量。如果子類定義的成員變量與從父類繼承的成員變量同名,我們就說子類隱藏了父類的成員變量。此時(shí),子類對(duì)象訪問的是子類重新定義的成員變量。二、方法的重寫如果子類定義的方法與從父類繼承的方法從名字、返回類型、參數(shù)個(gè)數(shù)和類型都完全相同,則我們說子類重寫了從父類繼承的方法。子類重寫父類的方法時(shí),不可以降低方法的訪問權(quán)限。(訪問權(quán)限的級(jí)別從高到低依次為:public、protected、友好的、private)。一旦子類重寫了從父類繼承的方法,那么子類對(duì)象調(diào)用的一定是這個(gè)重寫的方法,重寫的方法可以操作從父類繼承的成員變量也可以操作子類新聲明的成員變量。相關(guān)知識(shí)與技術(shù)5.8super關(guān)鍵字5.8

super關(guān)鍵字前面講過,如果子類中定義的成員變量和父類中的成員變量同名時(shí),子類就隱藏了從父類繼承的成員變量。當(dāng)子類中定義了一個(gè)方法,并且這個(gè)方法的名字、返回類型、參數(shù)個(gè)數(shù)和類型和父類的某個(gè)方法完全相同時(shí),子類從父類繼承的這個(gè)方法將被隱藏,如果想在子類中使用被子類隱藏的成員變量或方法可以使用關(guān)鍵字super。一、使用關(guān)鍵字super調(diào)用父類的構(gòu)造方法子類不能繼承父類的構(gòu)造方法,如果子類想使用父類的構(gòu)造方法,必須在子類的構(gòu)造方法中使用,前面加上關(guān)鍵字super來表示,并且super必須是子類構(gòu)造方法的第一條語句。注意若在子類構(gòu)造方法中,沒有使用關(guān)鍵字super調(diào)用父類的某個(gè)構(gòu)造方法,那么默認(rèn)有super();即調(diào)用父類的不帶參數(shù)的構(gòu)造方法。二、使用關(guān)鍵字super操作被隱藏的成員變量和方法如果想在子類中使用那些被隱藏了的父類的成員變量或方法就可以使用關(guān)鍵字super。如:super.x、super.f(),使用的就是被子類隱藏的父類的成員變量x和方法f()。相關(guān)知識(shí)與技術(shù)5.9final關(guān)鍵字5.9final關(guān)鍵字final關(guān)鍵字可以修飾類、成員變量和方法中的參數(shù)final類不能被繼承,即不能有子類。如果一個(gè)成員變量

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論