版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
§3-2學(xué)生成績處理Java面向?qū)ο蟪绦蛟O(shè)計教學(xué)目標任務(wù)分析
在學(xué)生信息處理中不僅需要處理學(xué)生對象包括的學(xué)號、姓名等這些基本信息,還要包括學(xué)生的選課情況,記錄每門課程的成績,并對學(xué)生個人或班級成績進行一些統(tǒng)計分析方面的處理。要完成這些功能就涉及到類中方法的定義、調(diào)用等基本知識。教學(xué)內(nèi)容1成員類別方法的定義及調(diào)用23this關(guān)鍵字變量作用域45類及成員的訪問權(quán)限main()方法中的參數(shù)6一、方法定義及調(diào)用方法定義的一般格式:
[方法修飾符]返回值類型方法名([形式參數(shù)列表]){
方法體
}方法定義包括:方法聲明(方法首部)和方法體兩部分。如:
publicvoidshowInf(){//定義方法
System.out.println(sid+"\t"+sname+"\t"+sage);
}類中的成員分為兩類:表示屬性的變量成員和表示行為的方法成員。在一個類中方法成員可以沒有,也可以有多個,它非常類似與其他高級語言的函數(shù)或過程,方法就是一段用來完成某項任務(wù)的程序代碼。classCircle{
doubleradius;
doublecircumference()
{
return2*3.14159*radius;
}
}return語句的基本格式為:
return[表達式];一、方法定義及調(diào)用方法首部需要聲明的內(nèi)容1)修飾符。用來對定義的方法作某些限定,這些修飾符可以分為訪問權(quán)限控制符和非訪問權(quán)限控制符兩種。如public等。2)返回值類型。返回值類型指定了方法被執(zhí)行后需要返回的數(shù)據(jù)類型,可以是任何合法有效的類型,包括用戶創(chuàng)建的類的類型。如果該方法不返回任何值,則它的返回值類型必須為void。3)方法名。方法名由用戶指定,可以是任何合法的標識符,并盡量做到見名知義。4)形式參數(shù)列表。形式參數(shù)列表是一個或多個形參類型的聲明,多個形參時用逗號分隔。形參用于接收方法被調(diào)用時傳遞給方法的參數(shù)值。如果方法被調(diào)用不需要傳遞參數(shù),那么參數(shù)表為空。所以,一個方法可以有多個形式參數(shù),也可以沒有。形參列表中應(yīng)該對每一個形式參數(shù)進行獨立的數(shù)據(jù)類型說明。如:max(intnum1,intnum2)而不能說明為max(intnum1,num2)。一、方法定義及調(diào)用方法體方法體是方法定義的核心,是對方法功能的實現(xiàn)。其中它包括變量的聲明以及一組定義方法功能的語句集合。有返回值的方法必須使用關(guān)鍵字return返回方法的值,而返回值類型為void的方法則可以沒有return語句。return語句的基本格式為:
return[表達式];如:Circle類中定義一個計算周長的方法。
classCircle{
doubleradius;
doublecircumference(){
return2*3.14159*radius;
}
}一、方法定義及調(diào)用【例3-6】定義一個方法,求三個整數(shù)中的最大值。importjava.util.Scanner;publicclassMax3{
intmaxFrom3(intx,inty,intz){//x、y、z為形參 intmax; if(x>y) max=x; else
max=y;
if(max<z) max=z; returnmax;
}
publicstaticvoidmain(Stringargs[]){//主方法Max3max=newMax3();
//創(chuàng)建Max3對象
Scannerin=newScanner(System.in);intm;System.out.print("請輸入3個數(shù):");inta=in.nextInt();intb=in.nextInt();intc=in.nextInt();m=max.maxFrom3(a,b,c);//調(diào)用類方法maxFrom3(),a、b、c為實參System.out.println("Max="+m);}}一、方法定義及調(diào)用方法調(diào)用的一般格式為:
對象名.方法名([實參列表]);如:st.showInf();
classCircle{
doubleradius;
voidsetR(doubler){
radius=r;}
doublecircumference(){
return2*3.14159*radius;
}
}一個方法只有被調(diào)用后,其程序代碼才能被執(zhí)行publicclassCircleTest{
publicstaticvoidmain(String[]args){ Circlec1=newCircle();
c1.setR(5.5); System.out.println("半徑為:"+c1.radius+"圓的周長為:"+c1.circumference());
}}一、方法定義及調(diào)用【例3-7】利用已定義的類Box,分別計算長、寬、高分別為10、20、15和3、6、9的長方體的體積。classBox{ //定義Box類
doublelenth;
doublewidth; //定義成員變量
doubleheight;//定義設(shè)置長方體長、寬、高的方法
voidsetlwh(doublelsetlwh,doublew,doubleh){
lenth=l;
width=w;
height=h;
}
doublevolume(){//定義計算長方體體積的方法
returnlenth*width*height;
}}
classBoxDemo3{
publicstaticvoidmain(Stringargs[]){
Boxmybox1=newBox();
Boxmybox2=newBox();
doublevol;
mybox1.setlwh(10,20,15);//無返回值的調(diào)用
mybox2.setlwh(3,6,9);
vol=mybox1.volume();//有返回值的調(diào)用
System.out.println("mybox1的體積是:"+vol);
vol=mybox2.volume();
System.out.println("mybox2的體積是:"+vol);
}
}一、方法定義及調(diào)用方法調(diào)用過程當程序調(diào)用方法時,程序執(zhí)行流程將跳轉(zhuǎn)到被調(diào)用的方法中,直到執(zhí)行return語句或遇到方法結(jié)束標志,同時程序執(zhí)行流程轉(zhuǎn)到該方法的被調(diào)處,繼續(xù)后續(xù)程序的執(zhí)行。參數(shù)傳遞方法Java中參數(shù)的傳遞方式有兩種:值傳遞和引用傳遞。當參數(shù)的類型為基本數(shù)據(jù)類型時采用值傳遞,當參數(shù)類型為對象類型或數(shù)組時,采用引用傳遞方式。值傳遞:實參的值傳遞給形參變量。引用傳遞:將實參對象的引用傳遞給形參。一、方法定義及調(diào)用【例3-8】以基本類型數(shù)據(jù)為參數(shù)的方法調(diào)用。publicclassTestPassByValue{
publicstaticvoidmain(String[]args){
intnum1=1;
intnum2=2;
System.out.println("調(diào)用swap方法之前,num1的值:"+num1+",num2的值:"+num2);
swap(num1,num2); //調(diào)用swap方法
System.out.println("調(diào)用swap方法之后,num1的值:"+num1+",num2的值:"+num2);}
staticvoidswap(intn1,intn2){ //交換n1、n2兩個形參變量的值
System.out.println("-----swap方法內(nèi)部--------");
System.out.println("n1、n2的值交換之前n1的值:"+n1+"n2的值:"+n2);
inttemp=n1;
n1=n2;
n2=temp;
System.out.println("n1、n2的值交換之后n1的值:"+n1+"n2的值:"+n2);
}}一、方法定義及調(diào)用【例3-9】以對象作為參數(shù)的方法調(diào)用。classCircle{
doubleradius=1.0;
doublefindArea(){
returnradius*radius*3.14159;
}}
publicclassTestPassingObject{
publicstaticvoidmain(String[]args){CirclemyCircle=newCircle();intn=5;printAreas(myCircle,n);//對象myCircle作為實參System.out.println("\n"+"半徑是:"+myCircle.radius);System.out.println("n的值為:"+n);
}
publicstaticvoidprintAreas(Circlec,inttimes){//c為對象類型的形參
System.out.println("半徑\t\t面積");
while(times>=1){
System.out.println(c.radius+"\t\t"+c.findArea());
c.radius++;
times--;
}
}}二、成員類別關(guān)鍵字static表示靜態(tài),可以修飾屬性和方法,被static修飾的成員稱之為靜態(tài)成員(或類成員),包括靜態(tài)變量或靜態(tài)方法,不被static修飾的成員稱為實例成員(或?qū)ο蟪蓡T),包括實例變量或?qū)嵗椒?。實例成員引用方法:對象名.成員類成員引用可通過兩種方法:類名.成員或?qū)ο竺?成員
類中表示屬性的變量和表示行為的方法均稱為類的成員。這些成員又分為實例成員(或稱對象成員)和靜態(tài)成員(或稱類成員)。classCircle{
static
doubleradius;
doublecircumference()
{
return2*3.14159*radius;
}
static
doublearea()
{
return3.14159*radius*radius;
}
}二、成員類別類(靜態(tài))成員具備以下特點
1)靜態(tài)成員是屬于類的,隨著類的加載而加載,并完成了初始化。
2)被所有對象共享。3)可以直接被類名調(diào)用。類(靜態(tài))成員使用上需要注意以下幾點1)靜態(tài)方法中只能訪問靜態(tài)成員(包括主方法中)2)靜態(tài)方法中不可以使用this,super關(guān)鍵字類中表示屬性的變量和表示行為的方法均稱為類的成員。這些成員根據(jù)其使用上的差別又分為實例成員(或稱對象成員)和靜態(tài)成員(或稱類成員)。classCircle{
static
doubleradius;
doublecircumference()
{
return2*3.14159*radius;
}
static
doublearea()
{
return3.14159*radius*radius;
}
}二、成員類別【例3-10】類變量與實例變量使用比較。classTest{
staticinti;//定義i為類變量intj;//定義j為實例變量publicvoidprintVar(){
intk=0;i++;j++;k++;System.out.println(”i=”+i+”j=”+j+”k=”+k);}}publicclassMainTest{
publicstaticvoidmain(Stringargs[]){
Testc1=newTest();
c1.printVar();
c1.printVar();
Testc2=newTest();
c2.printVar();
c2.printVar();
}}二、成員類別【例3-11】利用類變量計算長方體的體積。classBox4{ doublelenth;doublewidth;staticdoubleheight=5;//定義類變量}publicclassBoxDemo4{ publicstaticvoidmain(String[]args){ Box4mybox1=newBox4(); Box4mybox2=newBox4(); doublevol;//main()方法內(nèi)的變量,是局部變量 mybox1.lenth=10; mybox1.width=20; mybox2.lenth=3; mybox2.width=6; vol=mybox1.lenth*mybox1.width*Box4.height;//訪問類變量height System.out.println("mybox1的體積是:"+vol); vol=mybox2.lenth*mybox2.width*Box4.height;//訪問類變量height System.out.println("mybox2的體積是:"+vol); }}二、成員類別【例3-12】類方法或靜態(tài)方法的使用。classStaticClass{
staticinta=42;
staticintb=99;
staticvoidcallme(){//定義類方法callme()System.out.println("a="+a);}}classTestStaticClass{
publicstaticvoidmain(Stringargs[]){StaticClass.callme();//調(diào)用類方法callme()
System.out.println("b="+StaticClass.b);//訪問類變量b
}}三、變量作用域全局變量定義在方法之外的變量為全局變量,它的作用域是整個類。如:publicclassCircle{
voidsetR(doubler){radius=r;}doublecircumference(){return2*3.14159*radius;}
doubleradius;}變量作用域:變量可以使用的范圍。Java變量分為:全局變量和局部變量。局部變量定義在方法內(nèi)部的變量(包括形參),只能在該方法(或塊)內(nèi)部使用。如:classsameName{
inta=10;publicstaticvoidmain(Stringargs[]){
inta=20;System.out.println(“a=”+a);}}再如:for(inti=1;i<=10;i++){
System.out.println(i);
}
變量的使用范圍被限定在定義它的最近的一組大括號內(nèi),超出范圍無法使用。三、變量作用域【例3-13】局部變量與實例變量同名。classSameName{
inta=10;publicstaticvoidmain(Stringargs[]){inta=20;System.out.println(“a=”+a);}}三、變量作用域【例3-14】成員變量、局部變量使用示例。classTest{inta=3; intb=5; intc=10; publicvoidsetc(inti){intc=i;//聲明局部變量c,與成員變量c同名 }publicintgetc(){returnc; }}classAccessTest{publicstaticvoidmain(Stringargs[]){
Testobj=newTest();obj.a=10;obj.b=20;obj.setc(100); System.out.println("a,b,andc:"+obj.a+""+obj.b+""+obj.getc());}}四、this關(guān)鍵字添加主題用關(guān)鍵字this訪問隱藏的成員變量基本格式:this.成員名例如:classsameName{inta=10;voidsetA(inta){
this.a=a;}}this代表當前對象,程序中可以通過this關(guān)鍵字訪問被隱藏的成員,還可以用來調(diào)用構(gòu)造方法。通過this訪問構(gòu)造方法基本格式:this([參數(shù)列表])例如:classCircle{doubleradius;
publicCircle(doubleradius){
this.radius=radius;}publicCircle(){
this(5.0);}doublearea(){returnradius*radius*Math.PI;}}說明:Java要求this()語句必須是構(gòu)造方法的第一個語句。五、方法重載添加主題classAddition{intadd(inta,intb){ //完成兩個整數(shù)相加returna+b;}doubleadd(doublea,doubleb){ //完成兩個實數(shù)相加returna+b;}intadd(inta,intb,intc){ //完成三個整數(shù)相加returna+b+c;}}方法重載是指在一個類中可以有名字相同的多個方法,但這些方法的參數(shù)必須是不同的,或者是參數(shù)個數(shù)不同,或者是參數(shù)類型、順序不同。publicclassTestAddition{publicstaticvoidmain(String[]args){Additionadt=newAddition();System.out.println("12+3="+adt.add(12,3));System.out.println("18.35+123="+adt.add(18.35,123));System.out.println("123+25+89="+adt.add(123,25,89));}}六、類及成員的訪問權(quán)限類的訪問權(quán)限修飾符:public類的訪問權(quán)限修飾符只有public,被public修飾的類允許跨包訪問;如果在定義類時省略了public,則該類只能在本包中使用。
訪問權(quán)限是指類及類成員是否允許其他類訪問??梢酝ㄟ^Java中的訪問權(quán)限修飾符來改變類或成員的訪問權(quán)限。classCircle{
static
doubleradius;
doublecircumference()
{
return2*3.14159*radius;
}
static
doublearea()
{
return3.14159*radius*radius;
}
}六、類及成員的訪問權(quán)限類成員的訪問權(quán)限有4種public:公共的protected:受保護的private:私有的無修飾符:默認的關(guān)鍵字public、protected和private則稱為Java的訪問權(quán)限控制修飾符。如果在聲明一個成員時,沒有用任何訪問權(quán)限控制修飾符進行修飾,則稱其為默認的訪問權(quán)限。其中:public訪問權(quán)限最為寬松,private(私有)訪問權(quán)限最為嚴格。
訪問權(quán)限修飾符本類同包其他類不同包子類不同包非子類public可以可以可以可以protected可以可以可以不可以默認可以可以不可以不可以private可以不可以不可以不可以六、類及成員的訪問權(quán)限【例3-16】信息隱藏示例。importjava.util.Scanner;
publicclassDemoPer{
publicStringname; //公共屬性:姓名
privateintage; //私有屬性:年齡
publicintgetAge(){ //獲取age屬性值 returnage;
}
publicvoidsetAge(intage){ //設(shè)置age屬性值 if(age<18){ System.out.println("錯誤!年齡應(yīng)該大于或等于18歲"); System.exit(0); //退出程序運行 } else{ this.age=age; }
}}publicclassTestDemoPre{publicstaticvoidmain(String[]args){DemoPerper=newDemoPer();="王林";Scannerin=newScanner(System.in);System.out.print("請輸入年齡:");intage=in.nextInt();per.setAge(age);System.out.println(+'\t'+per.getAge());}}七、main()方法中的參數(shù)main()方法是Java應(yīng)用程序執(zhí)行的入口,它具有String[]類型的參數(shù)args。一般方法的參數(shù)可以通過方法調(diào)用時的實參進行傳遞,main()中的參數(shù)是在程序執(zhí)行時由命令行提供的。當在命令行輸入執(zhí)行程序的命令時,緊跟在類名后的信息稱為命令行參數(shù),參數(shù)之間用空格分隔,這些參數(shù)被依次存儲在字符串數(shù)組args中。七、main()方法中的參數(shù)cla
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 物流企業(yè)倉儲服務(wù)合同
- 智能酒店管理系統(tǒng)規(guī)劃與設(shè)計合同
- 智慧社區(qū)建設(shè)與管理咨詢合同
- 2024年度山地租賃化協(xié)議
- 2024年工程咨詢協(xié)議精簡
- 在線攝影教育平臺內(nèi)容制作合同
- 人工智能輔助智能家居控制系統(tǒng)合同
- 2023屆高考化學(xué)魯科版一輪復(fù)習(xí)熱點強化練16 沉淀溶解平衡圖像
- 2024年某國有企業(yè)股權(quán)轉(zhuǎn)讓協(xié)議范本
- 2024年國際足球賽事贊助協(xié)議模板
- 斷裂力學(xué)與斷裂韌性
- 焊接方法代號(數(shù)字+字母)
- 淺談從閱讀、生活、作文中積累語言
- 簡潔卡通生日快樂賀卡模板
- 電磁輻射計算
- 藥事管理委員會會議紀要
- 不銹鋼方管尺寸及理論重量重量表
- 【公開課課件】高中英語讀后續(xù)寫(整合)
- 網(wǎng)球教練求職簡歷模板免費下載
- 個人喜好調(diào)查問卷
- 引發(fā)劑I分解(課堂PPT)
評論
0/150
提交評論