Java程序設計基礎與實踐課件第3章_第1頁
Java程序設計基礎與實踐課件第3章_第2頁
Java程序設計基礎與實踐課件第3章_第3頁
Java程序設計基礎與實踐課件第3章_第4頁
Java程序設計基礎與實踐課件第3章_第5頁
已閱讀5頁,還剩27頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第3章類和對象面向對象的基本概念Java語言的修飾符Java類及類中變量與方法的分類和定義方法Java對象的創(chuàng)建、使用和釋放3.1.1面向對象的編程的基本概念從程序設計的角度來看,面向對象的程序設計必須描述對象及其相互之間的關系,系統(tǒng)中一切皆為對象,具體來說,每一個事物就是一個對象,對象所歸屬的分類就是面向對象中重要概念-類。類與對象是不同但是又緊密相聯(lián)的概念。對象是類的實例,是由類生成的,一個對象具有哪些特性和行為,由類來決定。3.1.2Java語言的修飾符Java語言的修飾符分為訪問控制符和非訪問控制符兩大類。訪問控制符是一組限定類、變量或方法是否可以被自身或其他程序訪問和調用的修飾符,非訪問控制符是用于聲明特殊類、變量和方法的修飾符。所屬非訪問控制符含義類abstract抽象類修飾符,用abstract修飾符修飾的類,被稱為抽象類final最終類修飾符,當一個類不可能有子類時可用修飾符final把它說明為最終類變量static靜態(tài)修飾符,用static修飾的成員變量屬于類變量final最終域修飾符,用final定義常量方法abstract抽象方法控制符,用修飾符abstract修飾的方法稱為抽象方法static靜態(tài)方法控制符,用修飾符static修飾的方法屬于類方法final最終方法控制符,

用修飾符final修飾的方法稱為最終方法native本地方法控制符,用修飾符native修飾的方法稱為本地方法,聲明可以被外部程序訪問的方法synchronized同步方法控制符,

該修飾符主要用于多線程共存的程序中的協(xié)調和同步表3.1Java語言主要類、變量和方法的非訪問控制符基本含義表3.2Java語言訪問控制符定義的訪問權限表同一類中同一包中不同包中的子類不同包中的非子類適用范圍publicyyyy類、變量、方法protectedyyy變量、方法缺省yy類、變量、方法privatey變量、方法3.1.3類1.類的定義在Java語言中,類定義的基本格式如下:

[類修飾符]class類名[extends父類名][implements接口列表]{//類聲明

……//類體

}2.變量⑴變量的定義 變量的定義格式:

[變量修飾符]類型說明符變量名[=初始值][,變量名[=初始值]];⑵變量的分類①成員變量和局部變量在方法體外變量定義部分的變量稱為成員變量,在方法體內或方法參數(shù)中定義的變量稱為局部變量。局部變量的作用域為方法體內,成員變量的作用域為整個類。

Java中的成員變量在沒有進行顯示初始化的時候,系統(tǒng)會自動賦予默認值;局部變量必須進行顯示賦值操作,否則無法通過編譯器的編譯。例如:classPeople{//定義類

Stringname="John";//方法體外變量,為成員變量

voidsetName(Stringname){//方法參數(shù)變量為局部變量

System.out.println("采用this關鍵字獲得的變量為:"+);//使用this訪問成員變量

System.out.println("局部變量為:"+name);//局部變量

}StringgetName(){returnname;//方法體內沒有同名的局部變量,則訪問方法體外面成員變量

}publicstaticvoidmain(Stringargs[]){Peoplep=newPeople();//創(chuàng)建People類對象pp.setName("Mike");//為局部變量賦值

System.out.println("成員變量為:"+p.getName());//調用方法

}}②實例變量、類變量、最終變量實例變量對象是類的實例,類實例化后的變量稱為實例變量。 類變量 類變量也稱為靜態(tài)變量,類變量使用static聲明,系統(tǒng)為每個類變量只分配一次存儲空間,即所有的實例共享一個存儲空間。 最終變量當在類中定義變量時,在其前面加上final關鍵字,表示這個變量一旦被初始化便不可改變,對基本類型來說是其值不可變,而對于對象變量來說是其引用不可變,稱為最終變量,也稱為final常量。例如:classPeople{finalStringID="0001";//最終變量,不允許修改

Stringname;//實例變量

staticStringworkspace="清華大學";//類變量,可以由類名直接訪問

voidsetName(Stringname){=name;}StringgetName(){returnname;}publicstaticvoidmain(Stringargs[]){Peoplep=newPeople();p.setName("Mike");p.ID="0002";//非法,最終變量不允許修改

System.out.println("對象名訪問最終變量編號:"+p.ID); System.out.println("類名訪問最終變量編號:"+People.ID);/*非法,最終變量不能由類名直接訪問*/System.out.println("對象名訪問實例變量姓名:"+p.getName());System.out.println("類名訪問實例變量姓名:"+People.getName());/*非法,實例變量不能由類名直接訪問,類名訪問類變量*/System.out.println("類名訪問類變量工作單位:"+People.workspace);//類名訪問類變量

System.out.println("對象名訪問類變量工作單位:"+p.workspace);//對象名訪問類變量

}}3.方法⑴方法的定義 在Java語言中,方法只能作為類的成員,又稱為成員方法,其定義基本格式如下:

[方法修飾符]返回值的類型成員方法名([形式參數(shù)表])[throw[異常表]]{//方法聲明

//局部變量聲明部分

//執(zhí)行語句部分}基本類型作為參數(shù)當方法的參數(shù)是基本類型(包括整型、浮點、布爾型和字符型等)時,它是通過傳值方式進行調用的,即只是將實參的值的拷貝傳遞給方法,在方法內對形參進行操作,其操作對象是實參的拷貝,對實參不能造成影響。例如:classPeople{Stringid,name;voidsetName(Stringname){//字符型參數(shù)

=name;}StringgetName(){returnname;}StringgetInfo(Stringid,Stringname){//字符型參數(shù)

id="0002";name="John";Stringstr="形參編號:"+id+","+"形參姓名:"+name;returnstr;}publicstaticvoidmain(Stringargs[]){Peoplep=newPeople();//定義的實參

p.setName("Mike"); p.id="0001";System.out.println(p.getInfo(p.id,p.getName()));//輸出形參結果

System.out.println("實參編號:"+p.id+","+"實參姓名:"+p.getName());//輸出實參結果

}}運行結果:形參編號:0002,形參姓名:John實參編號:0001,實參姓名:Mike復合類型作為參數(shù)復合類型參數(shù)的傳值屬于“傳址”方式,引用是對象在內存中的地址,方法調用時,將實參的地址傳遞給形參,使得形參與實參共享同一內存地址,在方法內對形參進行操作即等于對實參進行相同的操作,在方法結束返回后,形參同樣被釋放,實參的內容是對形參操作的結果。例如:classPeople{Stringid,name;voidsetName(Stringname){=name;}StringgetName(){returnname;}StringgetInfo(Peopleq){q.id="0002";="John";Stringstr="形參編號:"+q.id+","+"形參姓名:"+;returnstr;}publicstaticvoidmain(Stringargs[]){Peoplep=newPeople();//定義實參

p.setName("Mike");p.id="0001";System.out.println(p.getInfo(p));//輸出形參結果

System.out.println("實參編號:"+p.id+","+"實參姓名:"+p.getName());//輸出實參結果

}}運行結果:形參編號:0002,形參姓名:John實參編號:0002,實參姓名:John⑵方法的分類

實例方法類實例化的方法稱為實例方法,沒有特殊的非訪問控制符標識。 類方法類方法也稱為靜態(tài)方法,使用static聲明,就像類變量一樣,類的所有實例對象共享同一個類方法。例如:classPeople{finalStringID="0001";//最終變量,不允許修改

Stringname;//實例變量

staticStringworkspace="清華大學";//類變量,可以由類名直接訪問

voidsetName(Stringname){=name;}StringgetName(){returnname;} staticStringgetworkspace(){ returnworkspace;}publicstaticvoidmain(Stringargs[]){Peoplep=newPeople();p.setName("Mike");System.out.println("類名.方法名方式訪問實例方法實例變量姓名:"+People.getName());/*非法,實例方法不能采用類名.方法名的方式訪問*/System.out.println("對象名.方法名方式訪問實例方法實例變量姓名:"+p.getName());System.out.println("類名.方法名方式訪問類變量工作單位:"+People.getworkspace()); System.out.println("對象名.方法名方式訪問類變量工作單位:"+p.getworkspace());}}最終方法如果一個類不允許其子類重寫某個方法,則可以把這個方法使用final修飾,這個方法稱為最終方法。例如:/**設計畢業(yè)生類作為最終類,獲取畢業(yè)前最后考試成績*/finalclassGraduates{//定義最終類,不允許被繼承

Stringname,id;intage,score;publicGraduates(Stringname,Stringid,intage){=name;this.id=id;this.age=age;}//定義最終方法,不允許被覆蓋

finalvoidsetScore(intscore){//設置最終成績

this.score=score;}finalintgetScore(){//獲取最終成績

returnscore;}publicstaticvoidmain(Stringargs[]){Graduatesg=newGraduates("王明","23330",22);g.setScore(65);System.out.println(g.getScore());;}}抽象方法用關鍵字abstract修飾方法稱為abstract方法,也稱為抽象方法。抽象方法只能包含在抽象類中,是一種僅有方法聲明而沒有方法體的方法。抽象方法只能包含在抽象類中,當一個方法為抽象方法時,意味著這個方法必須被子類的方法所重寫,否則其子類的該方法仍然是abstract的,而這個子類也必須是抽象的,即聲明為abstract。abstract不能與private、static、final并列修飾同一個方法,即構造方法、靜態(tài)方法、private方法不能被定義為抽象方法。⑶幾個特殊方法①構造方法在Java語言成員方法中,有一種特殊的方法,其與類同名,類創(chuàng)建對象時,總是使用它來初始化對象,這個方法稱為構造方法。構造方法的定義格式為: 構造方法名([形式參數(shù)表]){

方法體

} 從上面的定義格式可以看出,構造方法與成員方法有明顯的區(qū)別:

·不能被static、final、synchronized和abstract修飾;

·不含返回值的類型,方法體中也不能使用return語句返回一個值,而且構造方法不能定義成void,在定義構造方法時加了“void”,這個方法就變成了成員方法。

·構造方法名必須與類同名。②main()方法在Java中,main()方法是Java應用程序的入口方法,也就是說,Java應用程序在運行的時候,第一個執(zhí)行的方法就是main()方法,這個方法和其他的方法有很大的不同,方法的名字必須是main,方法的訪問控制符必須是public非訪問控制符必須是static,即類方法,無返回值,即返回值的類型為void,方法的參數(shù)必須是一個字符串數(shù)組。⑷方法重載在類中可以創(chuàng)建多個方法,它們具有相同的名字,但具有不同的參數(shù),或者參數(shù)的類型不同,或者參數(shù)的個數(shù)不同,這就是方法的重載。Java程序運行時,通過傳遞給方法的不同個數(shù)和類型的參數(shù)來決定具體使用哪個方法,這就是Java語言的多態(tài)性。例如:classPeople{Stringid,name;People(){//構造方法

id="0000";name=null;}People(Stringid,Stringname){//同名構造方法,參數(shù)不同

this.id=id;=name;}voidsetName(Strin

溫馨提示

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

評論

0/150

提交評論