




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
Object類對象轉型抽象類和抽象方法final關鍵字接口的創(chuàng)建和使用當前1頁,總共30頁。Object類是所有Java類的根父類(最高父類)任何一個java的類(class)都直接或者間接繼承自Object類如果在類的聲明中未使用extends關鍵字指明其父類,則默認父類為Object類
publicclassPerson{ ... }
等價于:publicclassPersonextendsObject{ ...}當前2頁,總共30頁。在父類中定義一個構造方法,2個static{},2個{}.在子類中定義一個構造方法,2個static{},2個{}.在場景類中創(chuàng)建一個子類對象,觀察結果,觀察調用順序.當前3頁,總共30頁。對Java對象的類型轉換稱為造型在造型前通常使用instanceof操作符測試一個對象的類型從子類到父類的類型轉換可以自動進行(多態(tài))從父類到子類的類型轉換必須通過造型(強制類型轉換)實現子類的對象可以當做基類的對象來使用稱作向上轉型(多態(tài)),反之稱為向下轉型無繼承關系的引用類型間的轉換是非法的當前4頁,總共30頁。//Person及Student類可自行定義publicclassTest{ publicvoidmethod(Persone){ System.out.println(e.getSchool());//
if(einstanceofStudent){ Studentme=(Student)e; System.out.println(me.getSchool()); } } publicstaticvoidmain(Stringargs[]){ Testt=newTest();
Personm=newStudent(); t.method(m); }}當前5頁,總共30頁。Object類中定義有publicStringtoString()方法,其返回值是String類型,描述當前對象的有關信息。//默認情況是打印的是類名@hashcode的十六進制表示在進行String與其他類型數據的連接操作時(如:System.out.println("info"+person)),將自動調用該對象類的toString()方法??梢愿鶕枰谟脩糇远x類型中重寫toString()方法。當前6頁,總共30頁。toString方法的列子:當前7頁,總共30頁。
Object類的方法
publicinthashCode()方法
返回該對象的哈希碼值。
publicClassgetClass()方法
返回此Object的運行時類。當前8頁,總共30頁。==操作符相同的字符串常量相等兩個Integer,如果其中至少一個是new出來的,則不等;如果都是同一個常量賦值的,則相等(-128~127).基本數據類型和封裝類會拆箱比較數值兩個不同封裝類的對象不能比較,編譯報錯.兩個不同的基本數據類型,如果可以自動轉換,則可以比較.有繼承關系的引用數據類型對象之間可以比較,當指向同一個對象時相等.沒有繼承關系的引用數據類型不能比較.當前9頁,總共30頁。equals方法在Object類中定義的equals方法: publicbooleanequals(Objectobj) 注意:形參是Object類型!!equals()方法的調用者必須是引用數據類型調用equals(...)方法時的實參可以是基本數據類型,java會自動進行裝箱.當前10頁,總共30頁。==操作符與equals方法在比較引用數據類型時,==操作符與equals()作用完全一樣------看引用的是不是同一對象除非在自定義的類中重寫了equals方法,或是下面的四類已經重寫了equals方法的特例:java.io.File;java.lang.String;//先講,再講自定義類重寫.java.util.Date封裝類
這四類當用equals()方法進行比較時,只比較類型及內容而不看引用的是不是同一對象.當前11頁,總共30頁。==操作符與equals方法舉例classTestEquals{
//請自行定義能滿足需要的MyDate類
publicstaticvoidmain(String[]args){ MyDatem1=newMyDate(24,3,2001); MyDatem2=newMyDate(24,3,2001); if(m1==m2){ System.out.println("m1==m2"); }else{ System.out.println("m1!=m2"); } if(m1.equals(m2)){ System.out.println("m1isequaltom2"); }else{ System.out.println("m1isnotequaltom2"); }
m2=m1; if(m1==m2){ System.out.println("m1==m2"); }else{ System.out.println("m1!=m2"); }}}當前12頁,總共30頁。應用場景:在定義一個類時,有些方法暫時還不知道該怎么實現,只能等子類把這些方法都實現后才能使用.這樣的方法應該定義為抽象abstract方法.含有抽象方法的類必須定義為抽象abstract類.當前13頁,總共30頁。用abstract來修飾類或方法
[修飾符]abstractclass類名{…}
[修飾符]abstract返回值類型方法名([形參列表]);抽象類不能被實例化,抽象方法必須被全部重寫后,其子類才可以聲明為非抽象的,才能生成它的子類對象。如果一個子類沒有實現抽象基類中所有的抽象方法,則子類也要聲明為一個抽象類。抽象類不一定包含抽象方法----不想讓人直接實例化可以聲明抽象類類型的引用,把它作為方法形參,返回值類型等當前14頁,總共30頁。在類中沒有實現的方法就是抽象方法,抽象方法沒有方法體(不同于方法體為空{})。思考:構造方法,靜態(tài)方法,public方法,protected方法,default方法,private方法,final方法能不能被聲明為抽象的方法。思考:屬性能否用abstract來修飾?當前15頁,總共30頁。思考:抽象類中可以有普通方法嗎?抽象類中可以有構造方法嗎?抽象類中可以有static方法嗎?抽象類中可以有static屬性嗎?抽象類中可以有實例屬性嗎?當前16頁,總共30頁。關鍵字final在Java中聲明類、屬性和方法時,可使用final修飾符來修飾。final標記的類不能被繼承。final標記的方法不能被子類重寫。final標記的變量(成員變量或局部變量)即成為常量,只能賦值一次,且在使用前必須被賦值。final標記的方法的形參不能被重新賦值.final標記的成員變量必須在聲明的同時或在每個構造方法(或構造語句塊)中顯式賦值(不會被默認初始化),然后才能使用。構造方法不能用final來修飾,因為構造方法不能被繼承,更無所謂重寫,用final修飾沒有意義,編譯會報錯.當前17頁,總共30頁。關鍵字final應用舉例publicfinalclassTest{ publicstaticinttotalNumber=5; publicfinalintid; publicTest(){ id=++totalNumber; } publicstaticvoidmain(String[]args){ Testt=newTest(); System.out.println(t.id); finalinti=10; finalintj; j=20; j=30;//非法 }}當前18頁,總共30頁。練習:對比static/final關鍵字參考前面章節(jié),復習static修飾符的用法;練習前頁例子及下述程序,并改正其錯誤,體會final關鍵字修飾變量時的用法;publicclassTestFinal{ publicstaticvoidmain(Stringargs[]){ inti=1; finalintj=10; j=100; finalintk; k=100; k=200;System.out.println("i="+i+"j="+j+"k="+k); }}當前19頁,總共30頁。當前20頁,總共30頁。接口(interface)是抽象方法和常量值組成的一個數據結構。從本質上講,接口是一種特殊的抽象類,這種抽象類中只包含常量和方法的定義,而沒有方法的實現[jdk8之前]jdk8之后,接口中可以定義default方法(一種實例方法),static方法接口定義舉例publicinterfaceRunner{ intid=1; voidstart(); publicvoidrun(); abstractvoidstop();}接口(1)當前21頁,總共30頁。接口(2)多個類可以實現同一個接口一個類可以實現多個接口與繼承關系類似,接口與實現類之間存在多態(tài)性定義java類的完整語法格式:
[<modifier>]class<name>[extends<superclass>] [implements<interface>[,<interface>]*]{ <declarations>* }當前22頁,總共30頁。接口應用舉例(1)publicinterfaceRunner{ voidstart(); publicvoidrun(); publicvoidstop();}當前23頁,總共30頁。接口應用舉例(1)publicclassPersonimplementsRunner{ publicvoidstart(){
//彎腰、蹬腿、咬牙、瞪眼、開跑 } publicvoidrun(){
//擺動手臂、維持直線方向 } publicvoidstop(){
//減速直至停止、癱倒、吐血、送醫(yī)院 }}當前24頁,總共30頁。接口應用舉例(2)當前25頁,總共30頁。接口應用舉例(3)interfaceRunner{publicvoidrun();}interfaceSwimmer{publicdoubleswim();}abstractclassAnimal{publicabstractinteat();}//classPersonextendsAnimalimplementsRunner,Swimmer{ publicvoidrun(){……} publicdoubleswim(){……} publicinteat(){……}}publicclassTest{ publicstaticvoidmain(Stringargs[]){ Testt=newTest(); Personp=newPerson(); t.m1(p); t.m2(p); t.m3(p); } publicvoidm1(Runnerf){f.run();} publicvoidm2(Swimmers){s.swim();} publicvoidm3(Animala){a.eat();}}當前26頁,總共30頁。Ex2實現前頁各類中的方法細節(jié),并根據自己的疑問改編和擴充有關類和接口的定義,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 抵押合同借款合同
- 甘肅減震支架施工方案
- 三農村電商推廣營銷策略手冊
- 國際公路貨運合同
- 人力資源開發(fā)合同
- 生態(tài)木墻板施工方案
- 種植屋面施工方案報價
- 銅包鋼施工方案
- 鐵路橋墩基坑回填施工方案
- 贈針高教學文學
- 牙周檢查記錄表
- GB/T 10060-2023電梯安裝驗收規(guī)范
- 《民航地面服務與管理》項目一
- 高一生物實驗室教學計劃安排表
- 地質學第五章地殼演化簡史課件
- 初中信息技術-初識Python教學課件設計
- 第三單元名著導讀《駱駝祥子》課件部編版語文七年級下冊
- 電路分析基礎(第5版)PPT完整全套教學課件
- Unit 1 My day B Lets talk(說課稿)人教PEP版英語五年級下冊
- 2022年組織能力調研白皮書-騰訊
- 高老師講語文-燈籠-部編版
評論
0/150
提交評論