




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、面向?qū)ο蟪绦蛟O(shè)計(上)ID:SCSJ001-Java Basic Syntax面向?qū)ο蟪绦蛟O(shè)計(上)類的繼承訪問控制(public/protected/private)方法覆蓋(重寫)重載2類的繼承面向?qū)ο笞钪匾奶攸c之一,就是可以實現(xiàn)對類的復(fù)用通過“繼承”一個現(xiàn)有的類,可以使用已經(jīng)定義的類中的方法和變量。類的方法可以被繼承,但是類的構(gòu)造器不能被繼承。3類的繼承(con.)類繼承的基本語法: class extends *在Java中,一個類只能繼承一個父類,這種方式叫做單繼承。這一點和C+不一樣。4類的繼承(con.)java.lang.Object類是所有類的父類雖然一個類只可以繼承一個父
2、類,但是一個父類卻可以被多個子類所繼承。從子類的角度看,它是“繼承(extends)”父類;而從父類的角度看,它是“派生(derive)”子類。它們指的都是同一個動作,只是角度不同而已。5類的繼承例子public class Animalprotected int weight;public int getWeight()return weight;public void setWeight(int w)weight=w;public class Dog extends Animal /* *子類新增方法 */ public void bark() System.out.println(Wan
3、gWang); 6類的繼承例子(con.)public class MyDogpublic static void main(String args)Dog myDog = new Dog();myDog.setWeight(50);System.out.printf(My Dogs Weight is %f“, myDog.getWeight();myDog.bark();7toString()方法在Object類中,定義了一個toString()方法,用于返回一個表示這個對象的字符串覆蓋該方法能用來提供某對象的自定義信息簡單類型使用它們的封裝類,可轉(zhuǎn)換成String8訪問控制在Java中,
4、可以在類、類的屬性以及類的方法前面加上一個修飾符(modifier),來對類進(jìn)行一些訪問上的控制。修飾符同一個類中同一個包中子類中全局privateYesdefaultYesYesprotectedYesYesYespublicYesYesYesYes9訪問控制(con.)訪問控制的限制程度從高到低如下圖所示。注意,Default不是一個修飾符,它只是用來表示一種不加任何修飾符時的狀態(tài)。 當(dāng)前類 當(dāng)前包 子類 全局privateDefaultprotectedpublic10方法的覆蓋(override)當(dāng)子類繼承父類時,可以從父類繼承它的protected和public屬性和方法。如果從父類
5、繼承的方法不能滿足子類的需求,可以對其進(jìn)行改寫,這個過程叫方法的覆蓋(override),也稱為方法的重寫。當(dāng)對父類的方法進(jìn)行覆蓋時,子類中的方法必須和父類中對應(yīng)的方法具有相同的方法名稱、輸入?yún)?shù)和返回值。子類中的覆蓋方法不能使用比父類中被覆蓋方法更嚴(yán)格的訪問權(quán)限。11方法的覆蓋例子public class PersonString name;int age;String sex;public String showName()return name;12方法的覆蓋例子(con.)public class Teacher extends Personprivate String departm
6、ent;public void setDepartment(String dept)department = dept;public String getDepartment()return department;/方法覆蓋public String showName()return name+老師;13方法的重載當(dāng)類中的方法名相同時,稱為方法的重載(overload)例如:public void println(int i);public void println(char c);public void println(String s);14構(gòu)造器的重載(案例6-5)除了方法外,類的構(gòu)造器
7、也可以實現(xiàn)重載類的構(gòu)造器可以相互調(diào)用,調(diào)用方式是使用this關(guān)鍵字來實現(xiàn)15作業(yè)有工人,農(nóng)民,教師,科學(xué)家,服務(wù)生,其中,工人,農(nóng)民,服務(wù)生只有基本工資.教師除基本工資外,還有課酬(元/天),科學(xué)家除基本工資外,還有年終獎,請你寫出相關(guān)類,將各種類型的員工的全年工資打印出來;完成一個打印類,要求能用同名方法打印不同的類型的輸入?yún)?shù);write(int s);write(float s);write(String s);16面向?qū)ο蟪绦蛟O(shè)計進(jìn)階(下)ID:SCSJ001-Java Basic Syntax17面向?qū)ο蟪绦蛟O(shè)計進(jìn)階super關(guān)鍵字this關(guān)鍵字封裝類=和equals()toStri
8、ng()18super 關(guān)鍵字在Java類中使用super來引用父類的成分super可用于訪問父類中定義的屬性super可用于調(diào)用父類中定義的成員方法super可用于在子類構(gòu)造器中調(diào)用父類的構(gòu)造器super的追溯不僅于直接父類,直到Object類19調(diào)用父類構(gòu)造器在子類的構(gòu)造器中可使用語句super(argument_list) 調(diào)用父類的構(gòu)造器如果子類的構(gòu)造器中沒有顯式地調(diào)用父類構(gòu)造器,也沒有使用this關(guān)鍵字調(diào)用重載的其它構(gòu)造器,則系統(tǒng)默認(rèn)調(diào)用父類無參數(shù)的構(gòu)造器如果子類構(gòu)造器中既未顯式調(diào)用父類構(gòu)造器,而父類中又沒有無參的構(gòu)造器,則編譯出錯20super關(guān)鍵字例子public class P
9、ersonprivate String name;private int age;private String sex;public String showName() return name;public class Teacher extends Person/方法覆蓋public String showName()return super.showName()+老師;21thisJava中為解決變量的命名沖突和不確定性問題,引入關(guān)鍵字“this”代表其所在方法的當(dāng)前對象。構(gòu)造器中指該構(gòu)造器所創(chuàng)建的新對象 方法中指調(diào)用該方法的對象this關(guān)鍵字的用法在類本身的方法或構(gòu)造器中引用該類的實例變
10、量和方法(案例6-6)將當(dāng)前對象作為參數(shù)傳遞給其它方法或構(gòu)造器(案例6-7)用來調(diào)用其他的重載的構(gòu)造器(案例6-8)22對象的構(gòu)造和初始化分析內(nèi)存分配,缺省的初始化進(jìn)行實例變量的初始化如下遞歸的進(jìn)行1. 設(shè)置實例變量的值為缺省的初始值 2. 調(diào)用對象的構(gòu)造器 ,綁定構(gòu)造器參數(shù)。3. 如果構(gòu)造器中有this()調(diào)用,則根據(jù)this()調(diào)用的參數(shù)調(diào)用相應(yīng)的重載構(gòu)造器,然后,轉(zhuǎn)到步驟5;否則轉(zhuǎn)到步驟4。4. 除java.lang.Object類外,調(diào)用父類的中的初始化塊初始化父類的屬性,然后調(diào)用父類構(gòu)造器,如果在構(gòu)造器中有super()調(diào)用,則根據(jù)super()中的參數(shù)調(diào)用父類中相應(yīng)的構(gòu)造器。5.
11、使用初始化程序和初始化塊初始化成員。6. 執(zhí)行構(gòu)造器方法體中其他語句。23初始化塊它指的是前面章節(jié)所屬的“游離塊”(1)不管使用哪個構(gòu)造器創(chuàng)建對象,它都會被首先運(yùn)行,(2)然后才是構(gòu)造器的主體部分被執(zhí)行 24對象初始化示例父類Person,子類Teacher初始化的三種情形調(diào)用父類的默認(rèn)構(gòu)造器構(gòu)造器中使用了this()調(diào)用本類中重載的構(gòu)造器構(gòu)造器中使用了super()調(diào)用父類的構(gòu)造器25封裝類對于簡單類型數(shù)據(jù),Java對它們進(jìn)行了封裝,使它們都有相應(yīng)的封裝類簡單數(shù)據(jù)類型封裝類 boolean Boolean byte Byte short Short int Integer long Long
12、 char Character float Float double Double26Integer的方法byte byteValue() 以 byte 類型返回該 Integer 的值。 double doubleValue()以 double 類型返回該 Integer 的值。 float floatValue() 以 float 類型返回該 Integer 的值。 int intValue() 以 int 類型返回該 Integer 的值。 long longValue() 以 long 類型返回該 Integer 的值。 short shortValue() 以 short 類型返回該
13、 Integer 的值。String toString() 返回一個表示該 Integer 值的 String 對象。 static int bitCount(int i) 返回指定 int 值的二進(jìn)制補(bǔ)碼表示形式的 1 位的數(shù)量。 static int parseInt(String s) 將字符串參數(shù)作為有符號的十進(jìn)制整數(shù)進(jìn)行解析。 static int parseInt(String s, int radix) 使用第二個參數(shù)指定的基數(shù),將字符串參數(shù)解析為有符號的整數(shù)。27Integer的方法static String toBinaryString(int i) 以二進(jìn)制(基數(shù) 2)無符
14、號整數(shù)形式返回一個整數(shù)參數(shù)的字符串表示形式。 static String toHexString(int i) 以十六進(jìn)制(基數(shù) 16)無符號整數(shù)形式返回一個整數(shù)參數(shù)的字符串表示形式。 static String toOctalString(int i) 以八進(jìn)制(基數(shù) 8)無符號整數(shù)形式返回一個整數(shù)參數(shù)的字符串表示形式。 static String toString(int i) 返回一個表示指定整數(shù)的 String 對象。 static String toString(int i, int radix) 返回用第二個參數(shù)指定基數(shù)表示的第一個參數(shù)的字符串表示形式。 static Intege
15、r valueOf(int i)返回一個表示指定的 int 值的 Integer 實例。 static Integer valueOf(String s)返回保存指定的 String 的值的 Integer 對象。 static Integer valueOf(String s, int radix) 返回一個 Integer 對象,該對象中保存了用第二個參數(shù)提供的基數(shù)進(jìn)行解析時從指定的 String 中提取的值。 28封裝類的例子public class WrapperClasspublic static void main(String args)Integer i = new Integ
16、er(10);Integer j = new Integer(10);System.out.println(i=j); /封裝類轉(zhuǎn)化簡單類型。int k = Value(); int l = i;29封裝類例子(con.)1010ij30= 和 equals()=和equals()都是用于相等型判斷的操作符= 操作符用來判斷兩個引用是否指的同一個對象,或者兩個簡單類型的值是否相等equals()方法用來判斷對象的內(nèi)容是否相等,相等的條件在該類中定義Object類的equals()方法直接用=實現(xiàn)31覆蓋默認(rèn)的equals()在Object類中的equals()方法直接使用=實現(xiàn),不實用覆蓋默認(rèn)
17、的equals()方法按照自己的需要,在equals()方法中定義對象相等的含義32String類ID:SCSJ001-Java Basic Syntax33 String類String對象代表一組不可改變的Unicode字符序列它的方法可用來創(chuàng)造新的字符串:concat、replace、substring、toLowerCase、toUpperCase和trim。查找字符的方法:endWith、startWith、 indexOf、 lastIndexOf。比較字符的方法:equals、equalsIgnoreCase、compareTo。其它:charAt、length, format,
18、getBytes34String對象的創(chuàng)建法一:String s = new String(“This is a string”);法二:String s = “This is a string”;35String對象創(chuàng)建String s1 = “abc”;String s2 = new String(s1);String s3 = new String(“abc”);String s4 = “abc”;s1=s4 : trues2=s3 : falses1=s2 : falses3=s4 : false“abc”s1s3s4s2“abc”“abc”棧堆36內(nèi)存地址的變化String a =
19、new String(abc);String b = a;a = new String(123);System.out.println(b);/results:abc , why?b:0 x34877654a:0 x34877654“abc”“123”棧堆a(bǔ):0 xff8776540 x348776540 xff87765437StringBuffer/StringBuilder類StringBuffer對象代表一組可改變的Unicode字符序列構(gòu)建器:StringBuffer() 創(chuàng)建一個空的字符緩沖,長度為16個字符容量;StringBuffer(int capacity) 用指定的初始容
20、量創(chuàng)建一個空的字符緩沖;StringBuffer(String initString) 創(chuàng)建包含initString的字符緩沖,并加上16個字符的備用空間。緩沖的修改操作:append、insert、reverse、setCharAt、setLength。38分析字符串相加的速度/字符串相加方法一:long start = System.currentTimeMillis();String s = ;for(int i = 0; i 10000; i+) s = s + i;System.out.println(System.currentTimeMillis() - start);/字符串相
21、加方法二:long start = System.currentTimeMillis();StringBuilder sb = new StringBuilder();for(int i = 0; i 10000; i+) sb.append(i);System.out.println(System.currentTimeMillis() - start);39StringUtils類(開源類,選學(xué))Apache項目下的開源項目,commons-lang-x.x.jarStringUtils中方法的操作對象是java.lang.String類型的對象,是JDK提供的String類型操作方法的補(bǔ)
22、充 ,除了構(gòu)造器,StringUtils中一共有130多個方法,并且都是static的 .40StringUtils.isEmptypublic static boolean isEmpty(String str) 判斷某字符串是否為空,為空的標(biāo)準(zhǔn)是str = null 或 str.length() = 0 下面是示例: StringUtils.isEmpty(null) = true StringUtils.isEmpty() = true StringUtils.isEmpty( ) = false StringUtils.isEmpty( ) = false StringUtils.is
23、Empty(bob) = false StringUtils.isEmpty( bob ) = false 41StringUtils.isNotEmptypublic static boolean isNotEmpty(String str) 判斷某字符串是否非空,等于!isEmpty(String str),下面是示例: StringUtils.isNotEmpty(null) = false StringUtils.isNotEmpty() = false StringUtils.isNotEmpty( ) = true StringUtils.isNotEmpty( ) = true
24、StringUtils.isNotEmpty(bob) = true StringUtils.isNotEmpty( bob ) = true 42StringUtils.isBlank/isNotBlankpublic static boolean isBlank(String str) 判斷某字符串是否為空或長度為0或由空白符(whitespace)構(gòu)成 ,下面是示例: StringUtils.isBlank(null) = true StringUtils.isBlank() = true StringUtils.isBlank( ) = true StringUtils.isBlank
25、( ) = true StringUtils.isBlank(t n f r) = true StringUtils.isBlank(b) = false StringUtils.isBlank(bob) = false StringUtils.isBlank( bob ) = false 43StringUtils.trimpublic static String trim(String str) 去掉字符串兩端的控制符(control characters, char = 32) 如果輸入為null則返回null ,下面是示例: StringUtils.trim(null) = null StringUtils.trim() = StringUtils.trim( ) = StringUtils.trim( b t n f r ) = StringUtils.trim( ntss b) = ss StringUtils.trim( d d dd ) = d d dd StringUtils.trim(dd ) = dd StringUtils.trim( dd ) = d
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 最GRE填空解題流程介紹
- 紙制品行業(yè)人才需求與職業(yè)規(guī)劃考核試卷
- 《馬克思主義哲學(xué)原理》課件:辯證唯物主義與歷史唯物主義
- 油墨耐高溫性能研究考核試卷
- 空中交通管制員技能大賽考核試卷
- 《二年級下冊小豬的寶藏課件語》
- 船用生活熱水供應(yīng)系統(tǒng)的設(shè)計與安裝考核試卷
- 礦山職業(yè)健康與安全防護(hù)考核試卷
- 2023年集裝箱行業(yè)洞察報告及未來五至十年預(yù)測分析報告
- 《急性心肌梗死》課件
- 初中七年級主題班會:團(tuán)結(jié)合作團(tuán)結(jié)就是力量(課件)
- 浙江省杭州市2023年中考英語真題(含答案)
- 銷售團(tuán)隊競爭PK機(jī)制方案
- GB/T 44672-2024體外診斷醫(yī)療器械建立校準(zhǔn)品和人體樣品賦值計量溯源性的國際一致化方案的要求
- 歷史人物范仲淹介紹
- 四年級下冊數(shù)學(xué)方程題100道及答案
- Know Before You Go:趣談“一帶一路”國家智慧樹知到期末考試答案章節(jié)答案2024年貴州理工學(xué)院
- 排水暗渠施工方案
- 小升初奧數(shù)競賽題100例附答案(完整版)
- 中層干部管理能力提升課件
- 2023年運(yùn)城市中心醫(yī)院招聘專業(yè)技術(shù)人考試真題
評論
0/150
提交評論