第四章Java面向對象程序設計3_第1頁
第四章Java面向對象程序設計3_第2頁
第四章Java面向對象程序設計3_第3頁
第四章Java面向對象程序設計3_第4頁
第四章Java面向對象程序設計3_第5頁
已閱讀5頁,還剩27頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

4.7多態及super關鍵字

多態的表現形式主要有方法的重載和方法的覆蓋,對象的上轉型對象和接口的回調也是多態的表現形式。(1)方法重載1)構造方法的重載2)普通方法的重載1)構造方法的重載classCard{privateStringcardNumber=null;

Card(){}Card(StringcardNumber){this.cardNumber=cardNumber;}}方法重載是指同一個類中多個方法享有相同的名字,但是這些方法的參數必須不同,參數不同是指:或者是參數的個數不同,或者是參數類型不同,或者是相同類型參數的排列順序不同。需要注意的是,方法的返回值類型不能用來區分方法的重載。

例:publicintvolume(inta,intb)publicvoidvolume(intx,inty)

例2)普通方法的重載兩個方法雖然返回值類型和參數名字不同,但參數個數、類型和順序完全相同,即具有相同的參數表。(2)方法覆蓋類繼承的過程中,子類方法跟父類方法名字、返回值類型及參數列表參數完全一樣,稱子類覆蓋了父類的方法。覆蓋

父類的方法通常是為了對其進行修改,并添加新的功能。子類中重寫方法的訪問控制權限要大于等于父類方法。當一個被覆蓋方法通過父類引用被調用,Java根據當前

被引用對象的類型來決定執行哪個方法。例說明:子類不能覆蓋父類中聲明為final的方法。②可以通過super關鍵字調用父類中被覆蓋的成員。子類可以繼承父類的非私有成員變量和成員方法,但是,如果子類中聲明的成員變量與父類的成員變量同名,那么父類的成員變量將被隱藏。如果子類中聲明的成員方法與父類的成員方法同名,并且參數個數、類型和順序也相同,那么稱子類的成員方法覆蓋了父類的成員方法。這時,如果想在子類中訪問父類中被子類隱藏的成員方法或變量時,就可以使用super關鍵字-------父類對象的引用。Super關鍵字(1)調用父類的構造方法構造方法作用的特殊性決定了它不可以被繼承。但是在設計子類的時候,我們希望在父類某個構造方法的基礎上來設計子類的構造,就可以在子類構造方法的第一條語句使用super來調用父類的某個構造方法。語法如下:super([參數]);classStudent{intnumber;Stringname;Student(intnumber,Stringname){this.number=number;=name;}}classUniverStudentextendsStudent{booleansex;UniverStudent(intnumber,Stringname,booleansex){//子類的構造方法super(number,name);//調用父類的構造方法

this.sex=sex;}publicstaticvoidmain(Stringargs[]){UniverStudentzhangSan=newUniverStudent(2009020301,“張三",false);System.out.println("我是"+zhangS+“我的學號是"+zhangSan.number);}}(2)調用父類的同名成員被子類隱藏的屬性和被子類覆蓋的方法都可以通過super來調用。1)調用父類被覆蓋的方法語法如下:super.方法名([參數]);2)調用父類被隱藏的成員變量語法如下:super.變量名例1

例24.8包包(Package)是Java提供的一種命名空間機制,實現了對

類的存放和引用位置的管理,包對應一個文件夾,包中還可

以再有子包,稱為包的等級。在編寫類的時候可以聲明類所在的包,在同一個包中類名不

能重復,在不同的包中類名可以相同。當源程序中沒有聲明類所在的包時,類被存放在默認的包中,該默認包中的類要求類名唯一,不能重復,否則會產生沖突。Java的類庫就是用包來實現類的分類和存放,每個包中都有

多組相關的類和接口。(1)創建包默認情況下,系統會為每個Java源程序創建一個無名包。

該Java文件定義的所有類都隸屬于這個無名包,它們之間

可以相互應用非私有的變量和方法。Java提供創建包的語句是package語句。創建包的語法格式為:package<包名>;

說明:每個Java源程序文件都隸屬于一個包,如果程序中無package語句,則該源程序隸屬于Java的默認無名包。

如果有package語句,那么該源程序文件創建的類都放入package語句指定的包中。每個Java源程序只有一個package包,且必須是作為第一

條語句存放在程序中。程序在執行package語句時,首先檢查語句中指定的包(文件夾)是否存在,如果存在則直接使用原有文件夾;如

果不存在,則建立與包名相同的文件夾。packagemypackage;publicclassCalculate{publicintadd(intx,inty){return(x+y);}}編譯后生成的類將存放到已建立的包中(即mypackage文件夾中)在應用程序中還可以創建多層次的包,即一個包中又可以包含一個子包,將層次中的每個包名用圓點“.”分隔即可。一個創建包等級的格式如下:package

<包名>[.<子包名>.[<子包名>…]]子包的創建:packagemypackage.firstpackage.secondpackage;publicclassClassname{message(Strings){system.out.println(s);}}

(2)引用包

在dos環境下,Classpath指明類庫在操作系統中的位置。把自定義包的路徑添加到classpath中,不同的路徑用“;”隔開,通過import語句方便地引用包。

java.lang包中的最基本應用時系統自動加載的,不需要

顯示的用import語句導入就看可以使用其中的類。Java引入包中的類有兩種途徑:①直接在被使用的類前面加上完整的包名②

通過import引用包中的類①在類名前加上包名publicclassJOptionPaneDemo{publicstaticvoidmain(Stringargs[]){javax.swing.JOptionPane.showMessageDialog(null,”HelloJava”);}}②

通過import引用包中的類import語句用于為程序引入需要的類。通過import語句

引入類后,就可以在程序中直接使用類名來訪問。import語句的語法格式如下:import<包名>[.<子包名1>[.<子包名2>…]].類名|接口名|*;其中import是關鍵字,多個包及類或接口之間用圓點“.”分隔,“*”表示包中所有類或接口。例如:importjava.awt.*;例包和訪問權限一個包中只有訪問權限為public的類才能被其它包引用(創建此類的對象),其它有默認訪問權限的類只能在同一包中使用。在不同包中類成員的訪問權限:

public類的public成員可以被其它包的代碼訪問;protected成員可以被由它派生的其它包中的子類訪問。

默認訪問權限類的成員,不能被其它包的代碼訪問。Java源程序結構Java的源程序文件(.java文件)中可以包含以下類型的成分:package包名//聲明所在包,0-1句import包名.類名|包名.接口名//導入其它包中的類或接口,0-多句,“|”表示2者選1[public]class|interface//聲明類或接口,1-多句說明:一個源程序文件中,最多只能有一條package語句,并且必須是第1條語句。一個源程序文件中,可以有多條import語句,并且必須位于其它類或接口聲明之前。一個源程序文件中,可以定義多個類或接口,但只能定義一個public權限類或public權限接口,并且該類或接口名與文件名相同。4.9系統類庫簡介Java類庫的結構類庫就是JavaAPI(ApplicationProgrammingInterface,應用程序接口),是系統提供的已實現的標準類的集合。在程序設計中,合理和充分利用類庫提供的類和接口,不僅可以完成字符串處理、繪圖、網絡應用、數學計算等多方面的工作,而且可以大大提高編程效率,使程序簡練、易懂。

Java類庫中的類和接口大多封裝在特定的包里,每個包具有自己的功能。Object類是Java程序中所有類的直接和間接父類,也是類庫中所有類的父類,包含了所有Java類的公共屬性。1.java.lang包中的常用類⑴Object類(2)String類(3)Math類方法定義功能publicstaticdoublesin(doublea)求正弦值publicstaticdoublecos(doublea)求余弦值publicstaticdoubletan(doublea)求正切值publicstaticdoubleexp(doublea)返回e的a次方publicstaticdoublelog(doublea)返回a的自然對數publicstaticdoublesqrt(doublee)返回a的平方根publicstatictypemax(a,b)返回a、b中的大數publicstatictypemin(a,b)返回a、b中的小數publicstatictypeabs(a)返回a的絕對值(4)數據類型類數據類型類又稱包裝類,與基本數據類型(如:int,double,char,long等)密切相關,每一個基本數據類型都對應一個包裝類,它的名字也與這個基本數據類型的名字相似。

例如:double對應的包裝類為Double。不同的是,包裝類是一個類,有自己的方法,這些方法主要用來操作和處理它所對應的基本數據類型的數據。Integer類的基本使用方法類別

方法定義

功能構造函數publicInteger(intvalue)根據一個整型數生成一個整型對象publicInteger(Strings)根據一個整型數字字符序列生成一個整型對象實例方法publicstaticintintValue()將包裝類對象轉換成整型數據publicstaticintparseInt(Strings)將字符串轉化為整型數據publicstaticIntegervalueOf(Strings)將一個字符串轉化成Integer對象publicStringtoString()返回一個表示整型值得String對象classDataTypeDemo{ publicstaticvoidmain(Stringargs[]){ Strings1="1000";Strings2=null;intbetMoney=10000;intmyMoney=0;s2=String.valueOf(betMoney);

//將整型數據轉化為Srting對象myMoney=Integer.parseInt(s1);//將字符串轉化為整型數據System.out.println(s2);System.out.print(myMoney);}}2.java.util包中的常用類⑴ArrayList類ArrayList對象是數據的列表,是長度可變的對象引用數組,類似于動態數組。例類別方法定義功能構造方法publicArrayList()構造一個初始容量為10的空列表publicArrayList(intsize)使用給定長度創建一個數組列表實例方法publicintsize()返回此列表中的元素個數publicEget(intindex)返回此列表中指定位置的元素,E表示類型publicintindexOf(Objectx)返回元素在列表中首次出現的位置publicbooleanadd(Eo)將指定元素加入到列表的尾部publicbooleanremove(object)從此列表中移除指定元素(2)Vector類Vector類包含在java.util包中,是可以實現可增長的對象數組。但是,Vector的大小可以根據需要增大或縮小,以適應創建Vector后進行添加或移除項的操作。例類別方法定義功能構造方法publicVector()創建一個空VectorpublicVector(i

溫馨提示

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

評論

0/150

提交評論