版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 java基礎(chǔ)主要內(nèi)容對(duì)象和類方法和屬性構(gòu)造器引用數(shù)據(jù)類型信息隱藏繼承 面向?qū)ο蟮乃枷敫攀雒嫦驅(qū)ο蟮木幊趟枷肓D使對(duì)計(jì)算機(jī)語言中對(duì)事物的的描述與現(xiàn)實(shí)世界中該事物的本來面目盡可能一致。 類(class)和對(duì)象(object)是面向?qū)ο蠓椒ǖ暮诵母拍铑愂菍?duì)一類事物描述,是抽象的、概念上的定義;對(duì)象是實(shí)際存在的該類事物的每個(gè)個(gè)體,因而也稱實(shí)例(instance)。 類定義一個(gè)類public class Person 給類加上屬性public class Person int name; 給類加上行為public class Person int name; public void sing() /i
2、n the sing method; 類的組成由屬性(實(shí)例變量)和方法屬性-實(shí)例變量 權(quán)限 修飾 類型 變量名 =初值;private int age =0;private boolean flag=false;public class PersonPrivate String userName;Private int age;方法權(quán)限 修飾 返回值類型 方法名 (形參列表) 方法體;public class Personpublic void say()public String setXXXX(String str)方法參數(shù)的傳遞public void say(String songNam
3、e)public void action()say(“give it to me”);理解參數(shù)傳遞的含義實(shí)參形參方法注意:在方法內(nèi)定義變量時(shí)須:1.除了final不加任何修飾符.2.使用之前必須初始化.創(chuàng)建類的對(duì)象聲明并創(chuàng)建一個(gè)Person類的對(duì)象,將該對(duì)象命名為p Person p = new Person();在調(diào)用方法前必須產(chǎn)生一個(gè)對(duì)象調(diào)用對(duì)象的方法調(diào)用對(duì)象p中的方法p.sing();信息隱藏使用者對(duì)類內(nèi)部定義的數(shù)據(jù)(對(duì)象的成員變量)的直接操作會(huì)導(dǎo)致數(shù)據(jù)的錯(cuò)誤、混亂或安全性問題。public class Person public int age;public class Test pu
4、blic static void main(String args)Person b = new Person();b.age = -3; 封裝Java中通過將數(shù)據(jù)封裝、聲明為私有的(private),再提供一個(gè)或多個(gè)公開的(public)方法實(shí)現(xiàn)對(duì)該屬性的操作封裝的好處封裝的好處隱藏一個(gè)類的實(shí)現(xiàn)細(xì)節(jié);使用者只能通過事先定制好的方法來訪問數(shù)據(jù),可以方便地加入控制邏輯,限制對(duì)屬性的不合理操作;便于修改,增強(qiáng)代碼的可維護(hù)性;封裝class Person private int age;public void setAge(int i)if(i130) return;age = i; public
5、int getAge() return age;public class Testpublic static void main(String args)Person b = new Person();b.setAge(3);b.setAge(300);System.out.println(b.getAge();實(shí)例變量與局部變量實(shí)例變量聲明在類中而不是方法中局部變量聲明在方法中局部變量使用前必須初始化實(shí)例變量有默認(rèn)值局部變量沒有默認(rèn)值Public class Foopublic void go() int x; int z = x+3;/無法編譯變量的比較=與equals=用于比較兩個(gè)pri
6、mitive 主數(shù)據(jù)類型或者判斷兩個(gè)引用是否引用同一個(gè)對(duì)象繼承假定有兩個(gè)類,它們或多或少地具有一組相同的屬性和方法??梢詣?chuàng)建一個(gè)具有兩個(gè)類的共同屬性的父類,而不聲明兩個(gè)不同的類,因此,子類可以繼承父類的全部或部分屬性。在OOP術(shù)語中 父類還可以成為超類或基類,子類又稱為派生類。繼承繼承繼承關(guān)系的驗(yàn)證Is aHas a為什么使用繼承繼承的實(shí)現(xiàn)手段是派生和擴(kuò)展實(shí)現(xiàn)了代碼重用定義共同的協(xié)議如何使用繼承extends要繼承一個(gè)類,可以使用extends關(guān)鍵字,意味著擴(kuò)展父類的功能,java中只支持單一繼承。Public class VipUser extends User/.類的繼承為描述和處理個(gè)人信
7、息,定義類Personpublic class Person public String name; public int age; public Date birthDate; public String getInfo() .Person+name : String +age : int+birthDate : Date+getInfo() : String類的繼承 為描述和處理學(xué)生信息,定義類Student:public class Student public String name; public int age; public Date birthDate; public Stri
8、ng school; public String getInfo() .Student+name : String +age : int+birthDate : Date+school : String+getInfo() : String類的繼承 (3) 通過繼承,簡化Student類的定義:public class Person public String name; public int age; public Date birthDate; public String getInfo() .public class Student extends Person public Strin
9、g school;Person+name : String +age : int+birthDate : Date+getInfo() : StringStudent+school : String類的繼承類繼承語法規(guī)則: class extends *Java只支持單繼承,不允許多重繼承一個(gè)子類只能有一個(gè)父類一個(gè)父類可以繼承出多個(gè)子類單繼承舉例Person+name : String +age : int+birthDate : Date+getInfo() : StringStudent+school : StringSoldierOfficerGraduate+major : histo
10、ry+register() : void構(gòu)造方法不能繼承子類繼承父類所有的成員變量和成員方法,但不繼承父類的構(gòu)造方法在一個(gè)Java類中可以通過兩種方式獲得構(gòu)造方法使用系統(tǒng)默認(rèn)的無參構(gòu)造方法顯式定義一個(gè)或多個(gè)構(gòu)造方法一旦顯式定義了構(gòu)造方法,則系統(tǒng)不再提供默認(rèn)構(gòu)造方法定義共同的協(xié)議定義共同的協(xié)議通過繼承定義相關(guān)類的共同協(xié)議方法覆蓋的規(guī)則重寫方法的重寫方法的重寫在子類中可以根據(jù)需要對(duì)從父類中繼承來的方法進(jìn)行改造重寫方法必須和被重寫方法具有相同的方法名稱、參數(shù)列表和返回值類型重寫方法不能使用比被重寫方法更嚴(yán)格的訪問權(quán)限不能拋出更大的異常方法重寫舉例public class Person protect
11、ed String name;protected int age;public String getInfo() return Name: + name + n +age: + age; public class Student extends Person protected String school;public String getInfo() return Name: + name + nage: + age + nschool: + school; 方法重載在同一個(gè)類中可以定義多個(gè)同名方法public class PrintStreampublic void println(int
12、 i) public void println(float f) public void println(String s) 重載方法的參數(shù)列表必須不同 重載方法的返回值類型可以相同,也可以不同繼承繼承的實(shí)現(xiàn)手段是派生和擴(kuò)展實(shí)現(xiàn)了代碼重用定義共同的協(xié)議(重寫)Animal dog= new Dog();Animal cat = new Cat();通過聲明為父類型的對(duì)象引用來引用他的子類型對(duì)象多態(tài)多態(tài)在Java中,子類的對(duì)象可以替代父類的對(duì)象使用一個(gè)對(duì)象只能有一種確定的數(shù)據(jù)類型一個(gè)引用類型變量可能指向(引用)多種不同類型的對(duì)象Person p = new Student();Object o
13、= new Person();o = new Student(); 多態(tài)一個(gè)引用類型變量如果聲明為父類的類型,但實(shí)際引用的是子類對(duì)象,那么該變量就不能再訪問子類中添加的屬性和方法Student m = new Student();m.school = pku; /合法Person e = new Student(); e.school = pku;/非法多態(tài)傳遞參數(shù)和返回值都可以是多態(tài)pubic Animal getAnimal()Public void age(Animal animal)多態(tài)性應(yīng)用同類收集( homogenous collections)MyDate m = new MyD
14、ate2;m0 = new MyDate(22, 12, 1964);m1 = new MyDate(22, 7, 1964);異類收集(heterogeneous collections)Person p= new Person3;p0 = new Student();/學(xué)生p1 = new Person();/人p2 = new Graduate();/研究生多態(tài)性應(yīng)用方法聲明的參數(shù)類型為父類類型,可以使用子類的對(duì)象作為實(shí)參調(diào)用該方法public class Test public void method(Person e) / e.getInfo();public static void
15、 main(Stirng args) Test t = new Test(); Student m = new Student(); t.method(m);對(duì)象造型 (Casting )對(duì)Java對(duì)象的強(qiáng)制類型轉(zhuǎn)換稱為造型從子類到父類的類型轉(zhuǎn)換可以自動(dòng)進(jìn)行從父類到子類的類型轉(zhuǎn)換必須通過造型(強(qiáng)制類型轉(zhuǎn)換)實(shí)現(xiàn)無繼承關(guān)系的引用類型間的轉(zhuǎn)換是非法的Animal a = new Dog();Dog d = (Dog)a;instanceof在casting前可以使用instanceof操作符測試一個(gè)對(duì)象的類型if(e instanceof Student)instanceof 操作符public
16、class Test public void method(Person e) System.out.pritnln(e.getschool(); /非法 if(e instanceof Student) Student me = (Student)e; System.out.println(me.getSchool(); public static void main(String args) Test t = new Test(); Student m = new Student(); t.method(m); instanceof 操作符public class Person exten
17、ds Object public class Student extends Person public class Graduate extends Person -public void method1(Person e) if (e instanceof Student) / 處理Student類型及其子類類型對(duì)象 else if (e instanceof Graduate) /處理Graduate類型及其子類類型對(duì)象 else /處理Person類型對(duì)象Object 類Object類是所有Java類的根父類如果在類的聲明中未使用extends關(guān)鍵字指明其父類,則默認(rèn)父類為Object
18、類 public class Person .等價(jià)于:public class Person extends Object .this 關(guān)鍵字用于任何實(shí)例方法內(nèi),指向當(dāng)前對(duì)象this 的值指向?qū)ζ湔{(diào)用當(dāng)前方法的對(duì)象 this 關(guān)鍵字可在需要當(dāng)前類類型的對(duì)象引用時(shí)使用 48this 關(guān)鍵字public class ThisDemo int x; ThisDemo(int x) this.x=x; public void passingValue() System.out.println(x 等于 +x); public static void main(String args) ThisDemo test = new ThisDemo(10); test.passingValue(); 49關(guān)鍵字super舉例public class Person private String name; private int age; private Date birthDate; public String getInfo() return Name: + name + nage: +
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 四年級(jí)上冊語文教學(xué)計(jì)劃集合7篇
- 我的大學(xué)讀后感-15篇
- 《貓城記》讀書筆記個(gè)人書評(píng)
- 醫(yī)學(xué)生自我介紹范文集合四篇
- 冠心病二級(jí)預(yù)防他汀治療的理想與現(xiàn)實(shí)-血脂回顧和展望
- 淺析建筑物區(qū)分所有權(quán)制度
- 教師年度總結(jié)范文5篇
- 健身徒步旅行合同
- 2025年放射性核素遠(yuǎn)距離治療機(jī)合作協(xié)議書
- 餐館租賃合同范本
- 遼寧省2024年中考物理試題【附真題答案】
- 2024年甘肅省職業(yè)院校技能大賽中職教師組電子信息類產(chǎn)品數(shù)字化設(shè)計(jì)與開發(fā)賽項(xiàng)樣卷A
- 2024年部編新改版語文小學(xué)一年級(jí)上冊第六單元復(fù)習(xí)課教案
- 竣工決算工作底稿
- 爐省煤器改造更換施工方案
- 大學(xué)生心理健康(貴州大學(xué))智慧樹知到期末考試答案章節(jié)答案2024年貴州大學(xué)
- DB5334 T 12.3-2024《地理標(biāo)志證明商標(biāo) 香格里拉藏香豬》的第3部分飼養(yǎng)管理
- 佛山市2022-2023學(xué)年七年級(jí)上學(xué)期期末考試數(shù)學(xué)試題
- 信訪工作條例應(yīng)知應(yīng)會(huì)考試題庫300題(含答案)
- 污水處理廠的數(shù)字化轉(zhuǎn)型
- 公司和酒店住宿協(xié)議合同
評(píng)論
0/150
提交評(píng)論