第4章2 隱藏 this super final 包 接口課件_第1頁
第4章2 隱藏 this super final 包 接口課件_第2頁
第4章2 隱藏 this super final 包 接口課件_第3頁
第4章2 隱藏 this super final 包 接口課件_第4頁
第4章2 隱藏 this super final 包 接口課件_第5頁
已閱讀5頁,還剩20頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

隱藏、this、super、final、

包、接口3.7.2成員變量的隱藏和方法的重寫(1)當(dāng)子類中定義的成員變量與父類中的成員變量重名時(shí),則父類中的成員變量不能被繼承。(2)當(dāng)子類中定義的方法和父類中的方法完全相同時(shí),父類中的方法將被隱藏(即重寫了父類的方法或置換了父類的方法)因此,子類通過成員變量的隱藏和方法的重寫可以把父類的屬性和方法改變?yōu)樽陨淼膶傩院头椒??!纠?.9】classMu1{floatf(floatx,floaty){returnx*y;} //父類乘法}classAddextendsMu1{floatf(floatx,floaty)

//重寫了父類的方法f(){returnx+y;} //子類加法}publicclassMain{publicstaticvoidmain(Stringargs[]){Addsum=newAdd(); System.out.println(sum.f(2.5f,3f));}//調(diào)用的是子類重寫的方法}若刪除子類重寫的方法f(),則會調(diào)用父類方法classMu1{//父類floatf(floatx,floaty){returnx*y;}}classAdd4extendsMu1{//子類//floatf(floatx,floaty)//重寫了父類的方法f()//{returnx+y;}}publicclass重寫父類方法{publicstaticvoidmain(Stringargs[]){Add4sum=newAdd4();System.out.println(sum.f(2.5f,3f));System.out.println(sum.f(2.5f,3f));}}3.7.3this和super關(guān)鍵字

null代表“空”,在定義一個(gè)對象但尚未其分配內(nèi)存單元時(shí)可以指定這個(gè)對象為null;

this代表當(dāng)前類的對象;

super

父類對象1.thisthis表示當(dāng)前對象本身。通過this可以順利的訪問到當(dāng)前類的方法和變量?!纠?.10】PublicclassA{intb=8;

A(intb){System.out.println(b); //b=5System.out.println(this.b); //b=8}publicstaticvoidmain(Stringargs[]){Ac=newA(5);}}改類名為this2public

class

this2 //A{intb=8;this2(intb){System.out.println(b);//b=5System.out.println(this.b);//b=8}

public

static

voidmain(Stringargs[]){

this2

c=new

this2(5);}}2.superSuper表示的是當(dāng)前對象的直接父類對象,是當(dāng)前對象的直接父類的對象引用。

classMul

{floatf(floatx,floaty){returnx*y;}}publicclassAddextendsMul

{floatf(floatx,floaty){returnx+y;}voidm(){float

a=f(5f,3f);

//a=5f+3f=8.0000000

float

b=super.f(5f,3f);//b=5f*3f=15.0000000System.out.println(“a=”+a);System.out.println(“b=“+b);} publicstaticvoidmain(Stringargs[]){Addx=newAdd();x.m();}}主方法main屬于子類Add主方法亦可屬于單獨(dú)的類:賦值編譯運(yùn)行//Super表示的是當(dāng)前對象的直接父類對象,是當(dāng)前對象的直接父類的對象引用。classMul{floatf(floatx,floaty){returnx*y;}}classAddextendsMul{floatf(floatx,floaty){returnx+y;}

voidm(){

floata=f(5f,3f);//a=5f+3f=8.0000000

floatb=super.f(5f,3f);//b=5f*3f=15.0000000System.out.println("a="+a);System.out.println("b="+b);}}public

classthisSuper{public

static

voidmain(Stringargs[]){Addx=newAdd();x.m();}}主方法main屬于單獨(dú)的類final關(guān)鍵字final關(guān)鍵字final關(guān)鍵子可以修飾:類、成員變量和方法中的參數(shù)。final類不能被繼承:即不能有子類。final方法不能被重寫:如果一個(gè)方法被修飾為final方法,則這個(gè)方法不能被重寫。Final變量即常量:如果一個(gè)成員變量被修飾為final的,就是常量,常量必須賦給初值,而且不能再發(fā)生變化。Final參數(shù)為常量:如果方法的參數(shù)被修飾為final,該參數(shù)的值不能被改變。final方法特點(diǎn)保證不變、不被覆蓋:為了確保某個(gè)函數(shù)的行為在繼承過程中保持不變,并且不能被覆蓋,可以使用final方法。自動優(yōu)化:方法聲明為final,編譯器即對此方法的調(diào)用進(jìn)行優(yōu)化。(編譯器會自行判斷是否應(yīng)對final方法進(jìn)行進(jìn)行優(yōu)化。)Private=final、static=final:class中的所有private和static方法自然就是final。Final的意義:到此為止final在方法之前:防止方法被覆蓋。final在類之前:該類不能被繼承。final在變量之前:定義一個(gè)常量。static的意義:該變量和方法屬于類static在變量或方法之前: 表明它們是屬于類的classABCD{chardata;staticint_share_data;}classDemo{ABCDa,b,c,d}objectbchardataobjectcchardataObjectbchardatastaticintshare_dataobjectbchardata//Final3.1.5包計(jì)算機(jī)操作系統(tǒng)利用文件夾或者目錄來存放相關(guān)或者同類的文檔。與此類似,Java語言用包的概念來組織相關(guān)的類。包在物理上一個(gè)文件夾,邏輯上是指一種文件分類概念。一個(gè)包就是指一組相關(guān)的類。例如:一個(gè)名叫Company(公司)的包,將包含一組類,如:Employee(雇員)、Manager(管理者)和Department(部門)等。聲明包的格式如下:

Package包名;其中:Package為關(guān)鍵字,包名為標(biāo)識符。使用包時(shí)注意:

(1)Package語句要作為程序非注釋語句的第一行語句。

(2)包內(nèi)的類名唯一(不重名)。

(3)用import語句引用包中的類。

import語句的基本格式為:

import包名.類名; 其中import為關(guān)鍵字,包名和類名之間用圓點(diǎn)(.)隔開。//程序文件名為Manager.javapackageCompany; //聲明包名CompanyclassEmployee //職工類{ publicStringname; //名字 publicintsalary; //薪水 publicStringgetSalary() //發(fā)工資 {【例3.5】編寫程序測試包,先建立一個(gè)Company文件夾,然后建立名為Manager.java的類文件。源程序代碼如下:解:在eclipse中,新建一個(gè)項(xiàng)目package(或在原有項(xiàng)目中),新建一個(gè)包:file—new—package,輸入包名Company,系統(tǒng)即會建立Company文件夾。再新建一個(gè)class:Manager.java,注意在package欄中填入:Conpany,編程如下: Stringstr; str="名字:"+name+"\nSalary:"+salary; returnstr;}}publicclassManagerextendsEmployee //公共類經(jīng)理類{ publicStringdepartment; //部門 publicStringgetSalary() //發(fā)薪 { //父類.方法子類變量 returnsuper.getSalary()+"\nDepartment:"+department; }}鍵入無誤eclipse將自動對此文件進(jìn)行編譯,生成類文件Manager.class。在原有項(xiàng)目(原目錄)建立源程序文件UsePackage.java。源程序代碼如下://程序文件名UsePackage.javaimportCompany.Manager; //引入包中的經(jīng)理類publicclassUsePackage //公共類應(yīng)用包{ publicstaticvoidmain(String[]args) {

Managerm=newManager();//實(shí)例經(jīng)理類對象m ="王飛"; m.salary=10000; m.department="業(yè)務(wù)部"; System.out.println(m.getSalary()); }}在eclipse中編譯運(yùn)行也可以在命令提示符狀態(tài)下編譯運(yùn)行,過程如圖3.4所示:從圖3.4中可以看出首先進(jìn)入Company目錄,編譯Manager.java文件,然后返回上層目錄,編譯UsePackage.java文件,最后執(zhí)行UsePackage類文件,輸出正確的結(jié)果。圖3.4測試包的輸出結(jié)果3.2接口Java編程語言中禁止多繼承屬性,但可以通過接口為類擴(kuò)展方法。接口中可以定義大量的常量和方法其中的方法只是一種聲明,沒有具體的實(shí)現(xiàn)代碼使用接口的類自行編寫實(shí)現(xiàn)這些方法的代碼。接口與類的不同在于:

(1)不能聲明變量,只能聲明常量。

(2)只有方法的聲明,沒有方法的實(shí)現(xiàn)。接口聲明的基本格式如下:

publicinterface接口名extends接口列表使用接口的類引入接口格式:

class類名

implements接口名【例3.6】測試接口,定義接口文件Product.java,定義了兩個(gè)常量(不能聲明變量),聲明了一個(gè)方法(不能編碼)。接口文件如下://程序文件名Product.javapublicinterfaceProduct{ staticfinalStringMAKER="計(jì)算機(jī)制造廠"; staticfinalStringADDRESS="上海"; publicintgetPrice();

}定義常量聲

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論