




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
面向?qū)ο筇匦缘谝豁摚踩摚?022年,8月28日本章內(nèi)容this關(guān)鍵字static關(guān)鍵字package和import語句類的繼承訪問控制方法的重寫Object類對象轉(zhuǎn)型多態(tài)抽象類接口第二頁,共三十二頁,2022年,8月28日this關(guān)鍵字在類的方法定義中使用的this關(guān)鍵字代表使用該方法的對象的引用。當(dāng)必須指出當(dāng)前使用方法的對象是誰時要使用this。有時使用this可以處理方法中成員變量和參數(shù)重名的情況。
publicclassLeaf{inti=0;publicLeaf(inti){this.i=i;}Leafincreament(){i++;returnthis;}voidprint(){System.out.println("i="+i);}publicstaticvoidmain(String[]args){Leafleaf=newLeaf(100);leaf.increament().increament().print();}}第三頁,共三十二頁,2022年,8月28日static關(guān)鍵字靜態(tài)成員變量在不創(chuàng)建類得對象的情況下,也可以使用,它是所有對象共有的變量,普通成員變量只有在創(chuàng)建了類的對象后才能被使用,與此相反,靜態(tài)變量可以不先創(chuàng)建對象而直接使用。靜態(tài)變量的聲明如下:staticinta;
類.a=10;
對象.a=20;第四頁,共三十二頁,2022年,8月28日publicclassTest{
staticinta;
intb;
publicstaticvoidmain(String[]args){Test.a=10;Testt1=newTest();Testt2=newTest();System.out.println(t1.a);t1.a=20;System.out.println(t1.a);t2.a=30;System.out.println(Test.a);
}}第五頁,共三十二頁,2022年,8月28日靜態(tài)方法只有在對象存在的條件下,我們才可以用成員變量和方法。然而,靜態(tài)方法則不需要首先創(chuàng)建對象,可以直接調(diào)用它,在使用靜態(tài)方法的時候一定要記住不可以在靜態(tài)的方法中調(diào)用非靜態(tài)的變量,如下程序:publicclassTest{ inta; staticvoidsetA(intb){ a=b; } publicstaticvoidmain(Stringargs[]){ Test.setA(10); }}第六頁,共三十二頁,2022年,8月28日靜態(tài)變量與靜態(tài)方法到底在什么方法中才能使用呢?如下程序publicclassTest{ staticinta; staticvoidhello(){ System.out.println("您好......");} staticvoidsetA(intb){ a=b; hello(); } voidprintA(){ System.out.println(a); hello(); } publicstaticvoidmain(Stringargs[]){ Test.setA(100); Testt=newTest(); t.printA();} }第七頁,共三十二頁,2022年,8月28日package和import語句為便于管理大型軟件系統(tǒng)中數(shù)目眾多的類,解決類的命名沖突問題,Java引入包(package)機(jī)制,提供類的多重類命名空間。第八頁,共三十二頁,2022年,8月28日package和import語句package語句作為Java源文件的第一條語句,指明該文件中定義的類所在的包。(若缺省該語句,則指定為無名包)。
它的格式為:packagepkg1[.pkg2[.pkg3…]];Java編譯器把包對應(yīng)于文件系統(tǒng)的目錄管理,package語句中,用‘.’來指明包(目錄)的層次,例如使用語句packagecom.cstp;則該文件中所有的類位于.com\cstp目錄下第九頁,共三十二頁,2022年,8月28日如果將一個類打包,則使用該類時,必須使用該類的全名(例如:),Java編譯器才會在找到該類。也可以使用import在文件的開頭引入要使用到的類;例如:可以不需要用import語句直接使用java.lang包中的類。importcom.cstp.MyClass;importjava.util.*;//引入java.util包中所有的類
.........MyClassmyClass=newMyClass();//可以直接使用類名
.........第十頁,共三十二頁,2022年,8月28日Packageimport總結(jié)如果想將一個類放入包中,在這個類源文件第一句話寫package必須保證該類的class文件位于正確目錄下另外的類想訪問的話:寫全名引入*具體類名訪問位于同一個包中的類不需要引用第十一頁,共三十二頁,2022年,8月28日類的繼承與權(quán)限控制Java中使用extends關(guān)鍵字實現(xiàn)類的繼承機(jī)制通過繼承,子類自動擁有了基類(superclass)的所有成員(成員變量和方法)。Java只支持單繼承,不允許多繼承:一個子類只能有一個基類一個基類可以派生出多個子類例子:TestExtends.java第十二頁,共三十二頁,2022年,8月28日訪問控制Java權(quán)限修飾符publicprotectedprivate置于類的成員定義前,用來限定其他對象對該類對象成員的訪問權(quán)限。對于class的權(quán)限修飾只可以用public和default。public類可以在任意地方被訪問default類只可以被同一個包內(nèi)部的類訪問修飾符類內(nèi)部同一個包子類任何地方privateYesdefault|packageYesYesprotectedYesYesYespublicYesYesYesYes第十三頁,共三十二頁,2022年,8月28日方法的重寫(OverWriteOverRide)在子類中可以根據(jù)需要對從基類中繼承來的方法進(jìn)行重寫。重寫方法必須和被重寫方法具有相同方法名稱、參數(shù)列表和返回類型。重寫方法不能使用比被重寫方法更嚴(yán)格的訪問權(quán)限。例子:TestOverWrite.java第十四頁,共三十二頁,2022年,8月28日super關(guān)鍵字在Java類中使用super來引用基類的成分;例如:classFatherClass{publicintvalue;publicvoidf(){value=100;("FatherClass.value="+value);}}classChildClassextendsFatherClass{publicintvalue;publicvoidf(){super.f();value=200;("ChildClass.value="+value);System.out.println(value);System.out.println(super.value);}}第十五頁,共三十二頁,2022年,8月28日繼承中的構(gòu)造方法1、子類的構(gòu)造過程中必須調(diào)用其基類的構(gòu)造方法。2、子類可以在自己的構(gòu)造方法中使用super(argument_list)調(diào)用基類的構(gòu)造方法。
3.如果使用super,必須寫在子類構(gòu)造方法的第一行。
4.如果子類的構(gòu)造方法中沒有顯示地調(diào)用基類構(gòu)造方法,則系統(tǒng)默認(rèn)調(diào)用基類無參數(shù)的構(gòu)造方法。
如果子類的構(gòu)造方法中沒有顯示地調(diào)用基類構(gòu)造方法,而基類中又沒有無參的構(gòu)造方法,則編譯出錯。TestSuperSub.java第十六頁,共三十二頁,2022年,8月28日Object類Object類是所有Java類的根基類如果在類的聲明中未使用extends關(guān)鍵字指明其基類,則默認(rèn)基類為Object類
publicclassPerson{ ... }等價于:publicclassPersonextendsObject{ ...}第十七頁,共三十二頁,2022年,8月28日對象轉(zhuǎn)型一個基類的引用類型變量可以“指向”其子類的對象。一個基類的引用不可以訪問其子類對象新增加的成員(屬性和方法)??梢允褂靡米兞縤nstanceof類名來判斷該引用型變量所“指向”的對象是否屬于該類或該類的子類。第十八頁,共三十二頁,2022年,8月28日對象轉(zhuǎn)型實例(1)classAnimal{ publicStringname;Animal(Stringname){ =name; }}classCatextendsAnimal{ publicStringeyeColor; Cat(Stringn,Stringc){ super(n);eyeColor=c; }}ClassDogextendsAnimal{ publicStringfurColor; Dog(Stringn,Stringc){ super(n);furColor=c; }}第十九頁,共三十二頁,2022年,8月28日對象轉(zhuǎn)型實例(2)publicclassTest{ publicstaticvoidmain(String[]args){ Animala=newAnimal("name"); Catc=newCat("catname","blue"); Dogd=newDog("dogname","black");
System.out.println(ainstanceofAnimal);//true; System.out.println(cinstanceofAnimal);//true; System.out.println(dinstanceofAnimal);//true; System.out.println(cinstanceofCat);//true;
a=newDog("bigyellow","yellow"); System.out.println();//bigyellow System.out.println(ainstanceofAnimal);//true; System.out.println(ainstanceofDog);//true; Dogd1=(Dog)a;//要加強(qiáng)制轉(zhuǎn)換符
System.out.println(d1.furColor);//yellow }}第二十頁,共三十二頁,2022年,8月28日多態(tài)多態(tài)源于希臘語,本意為“擁有多種形態(tài)”,在Java中,它指的是擁有相同形式,但根據(jù)不同的情形擁有不同機(jī)能的特性。例子,“數(shù)字+數(shù)字=數(shù)字”,然而,“String對象+數(shù)字=String對象”,根據(jù)不同的情形,“+”運(yùn)算符擁有不同的功能,既“+”運(yùn)算符具有多態(tài)性。還有實現(xiàn)了重載或重寫的方法擁有相同的名字,但不同情形下,他們又擁有不同的功能,所以重載和重寫也是一種多態(tài)。第二十一頁,共三十二頁,2022年,8月28日父類的引用指向子類對象從對象的內(nèi)存角度來理解試試.
假設(shè)現(xiàn)在有一個父類Father,它里面的變量需要占用1M內(nèi)存.有一個它的子類Son,它里面的變量需要占用0.5M內(nèi)存.
現(xiàn)在通過代碼來看看內(nèi)存的分配情況:
Father
f
=
new
Father();//系統(tǒng)將分配1M內(nèi)存.
Son
s
=
new
Son();//系統(tǒng)將分配1.5M內(nèi)存!因為子類中有一個隱藏的引用super會指向父類實例,所以在實例化子類之前會先實例化一個父類,也就是說會先執(zhí)行父類的構(gòu)造函數(shù).由于s中包含了父類的實例,所以s可以調(diào)用父類的方法.
Son
s1
=
s;//s1指向那1.5M的內(nèi)存.
Father
f1
=
(Father)s;//這時f1會指向那1.5M內(nèi)存中的1M內(nèi)存,即是說,f1只是指向了s中實例的父類實例對象,所以f1只能調(diào)用父類的方法(存儲在1M內(nèi)存中),而不能調(diào)用子類的方法(存儲在0.5M內(nèi)存中).
Son
s2
=
(Son)f;//這句代碼運(yùn)行時會報ClassCastException.因為f中只有1M內(nèi)存,而子類的引用都必須要有1.5M的內(nèi)存,所以無法轉(zhuǎn)換.
Son
s3
=
(Son)f1;//這句可以通過運(yùn)行,這時s3指向那1.5M的內(nèi)存.由于f1是由s轉(zhuǎn)換過來的,所以它是有1.5M的內(nèi)存的,只是它指向的只有1M內(nèi)存.第二十二頁,共三十二頁,2022年,8月28日抽象類用abstract關(guān)鍵字來修飾一個類時,這個類叫做抽象類;用abstract來修飾一個方法時,該方法叫做抽象方法。含有抽象方法的類必須被聲明為抽象類,抽象類必須被繼承,抽象方法必須被重寫。如果重寫不了,應(yīng)該聲明自己為抽象。抽象類不能被實例化。抽象方法只需聲明,而不需實現(xiàn)。例子:第二十三頁,共三十二頁,2022年,8月28日
abstractclassAnimal{privateStringname;Animal(Stringname){=name;}publicabstractvoidenjoy();}classCatextendsAnimal{privateStringeyesColor;Cat(Stringn,Stringc){super(n);eyesColor=c;}publicvoidenjoy(){ ("貓叫聲......");}}第二十四頁,共三十二頁,2022年,8月28日Final關(guān)鍵字final修飾的變量的值不能夠被改變final的成員變量final的局部變量(形參)final修飾的方法不能夠被重寫final修飾的類不能夠被繼承例子:第二十五頁,共三十二頁,2022年,8月28日接口接口(interface)是抽象方法和常量值的定義的集合。從本質(zhì)上講,接口是一種特殊的抽象類,這種抽象類中只包含常量和方法的定義,而沒有變量和方法的實現(xiàn)。接口定義舉例: publicinterfaceRunner{ publicstaticfinalintid=1; publicvoidstart(); publicvoidrun(); publicvoidstop(); }第二十六頁,共三十二頁,2022年,8月28日接口特性接口可以多重實現(xiàn);接口中聲明的屬性默認(rèn)為public的;也只能是public的;接口中只能定義抽象方法,而且這些方法默認(rèn)為public的、也只能是public的;接口可以繼承其它的接口,并添加新的屬性和抽象方法。第二十七頁,共三十二頁,2022年,8月28日接口多個無關(guān)的類可以實現(xiàn)同一個接口。一個類可以實現(xiàn)多個無關(guān)的接口。與繼承關(guān)系類似,接口與實現(xiàn)類之間存在多態(tài)性。定義Java類的語法格式:
<modifier>class<name>[extends<superclass>] [implements<interface>[,<interface>]*]{ <declarations>* }第二十八頁,共三十二頁,2022年,8月28日接口舉例
interfaceSinger{publicvoidsing();publicvoidsleep();}classStudentimplementsSinger{publicvoidstudy(){System.out.println("studying");}
publicvoidsing(){System.out.println("studentissinging");}publicvoidsleep(){System.out.println("studentissleeping");}}第二十九頁,共三十二頁,2022年,8月28日一個類可以實現(xiàn)多個無關(guān)的接口
interfaceSinger{
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 營銷創(chuàng)業(yè)實訓(xùn)室管理辦法
- 蔡甸區(qū)文體場館管理辦法
- 街道辦公共設(shè)施管理辦法
- 西藏第十批駐村管理辦法
- 衢州市犬糞管理暫行辦法
- 西寧市文化課堂管理辦法
- 規(guī)范社保公積金管理辦法
- 設(shè)施馬鈴薯栽培管理辦法
- 請休假管理辦法(試行)
- 財政部支付單據(jù)管理辦法
- XX公司“十四五”戰(zhàn)略發(fā)展規(guī)劃及年度評價報告(模板)
- Q∕GDW 12104-2021 電力物聯(lián)網(wǎng)數(shù)據(jù)中臺技術(shù)和功能規(guī)范
- 機(jī)關(guān)檔案管理工作培訓(xùn)PPT課件
- 三寶四口及臨邊防護(hù)安全培訓(xùn)講義
- 油輪、化學(xué)品船的基本知識
- (高清正版)T_CAGHP 054—2019 地質(zhì)災(zāi)害治理工程質(zhì)量檢驗評定標(biāo)準(zhǔn)(試行)
- 25T汽車吊檢驗報告
- 變頻空調(diào)中的永磁電機(jī)電感分析
- 鐵路信號工程施工資料表格
- 高考??颊Z法填空詞性轉(zhuǎn)換匯總
- AOI自動光學(xué)檢測設(shè)備程序編寫
評論
0/150
提交評論