




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 java基礎(chǔ)主要內(nèi)容對(duì)象和類(lèi)方法和屬性構(gòu)造器引用數(shù)據(jù)類(lèi)型信息隱藏繼承 面向?qū)ο蟮乃枷敫攀雒嫦驅(qū)ο蟮木幊趟枷肓D使對(duì)計(jì)算機(jī)語(yǔ)言中對(duì)事物的的描述與現(xiàn)實(shí)世界中該事物的本來(lái)面目盡可能一致。 類(lèi)(class)和對(duì)象(object)是面向?qū)ο蠓椒ǖ暮诵母拍铑?lèi)是對(duì)一類(lèi)事物描述,是抽象的、概念上的定義;對(duì)象是實(shí)際存在的該類(lèi)事物的每個(gè)個(gè)體,因而也稱(chēng)實(shí)例(instance)。 類(lèi)定義一個(gè)類(lèi)public class Person 給類(lèi)加上屬性public class Person int name; 給類(lèi)加上行為public class Person int name; public void sing() /i
2、n the sing method; 類(lèi)的組成由屬性(實(shí)例變量)和方法屬性-實(shí)例變量 權(quán)限 修飾 類(lèi)型 變量名 =初值;private int age =0;private boolean flag=false;public class PersonPrivate String userName;Private int age;方法權(quán)限 修飾 返回值類(lèi)型 方法名 (形參列表) 方法體;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)建類(lèi)的對(duì)象聲明并創(chuàng)建一個(gè)Person類(lèi)的對(duì)象,將該對(duì)象命名為p Person p = new Person();在調(diào)用方法前必須產(chǎn)生一個(gè)對(duì)象調(diào)用對(duì)象的方法調(diào)用對(duì)象p中的方法p.sing();信息隱藏使用者對(duì)類(lèi)內(nèi)部定義的數(shù)據(jù)(對(duì)象的成員變量)的直接操作會(huì)導(dǎo)致數(shù)據(jù)的錯(cuò)誤、混亂或安全性問(wèn)題。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中通過(guò)將數(shù)據(jù)封裝、聲明為私有的(private),再提供一個(gè)或多個(gè)公開(kāi)的(public)方法實(shí)現(xiàn)對(duì)該屬性的操作封裝的好處封裝的好處隱藏一個(gè)類(lèi)的實(shí)現(xiàn)細(xì)節(jié);使用者只能通過(guò)事先定制好的方法來(lái)訪問(wèn)數(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í)例變量聲明在類(lèi)中而不是方法中局部變量聲明在方法中局部變量使用前必須初始化實(shí)例變量有默認(rèn)值局部變量沒(méi)有默認(rèn)值Public class Foopublic void go() int x; int z = x+3;/無(wú)法編譯變量的比較=與equals=用于比較兩個(gè)pri
6、mitive 主數(shù)據(jù)類(lèi)型或者判斷兩個(gè)引用是否引用同一個(gè)對(duì)象繼承假定有兩個(gè)類(lèi),它們或多或少地具有一組相同的屬性和方法。可以創(chuàng)建一個(gè)具有兩個(gè)類(lèi)的共同屬性的父類(lèi),而不聲明兩個(gè)不同的類(lèi),因此,子類(lèi)可以繼承父類(lèi)的全部或部分屬性。在OOP術(shù)語(yǔ)中 父類(lèi)還可以成為超類(lèi)或基類(lèi),子類(lèi)又稱(chēng)為派生類(lèi)。繼承繼承繼承關(guān)系的驗(yàn)證Is aHas a為什么使用繼承繼承的實(shí)現(xiàn)手段是派生和擴(kuò)展實(shí)現(xiàn)了代碼重用定義共同的協(xié)議如何使用繼承extends要繼承一個(gè)類(lèi),可以使用extends關(guān)鍵字,意味著擴(kuò)展父類(lèi)的功能,java中只支持單一繼承。Public class VipUser extends User/.類(lèi)的繼承為描述和處理個(gè)人信
7、息,定義類(lèi)Personpublic class Person public String name; public int age; public Date birthDate; public String getInfo() .Person+name : String +age : int+birthDate : Date+getInfo() : String類(lèi)的繼承 為描述和處理學(xué)生信息,定義類(lèi)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類(lèi)的繼承 (3) 通過(guò)繼承,簡(jiǎn)化Student類(lèi)的定義: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類(lèi)的繼承類(lèi)繼承語(yǔ)法規(guī)則: class extends *Java只支持單繼承,不允許多重繼承一個(gè)子類(lèi)只能有一個(gè)父類(lèi)一個(gè)父類(lèi)可以繼承出多個(gè)子類(lèi)單繼承舉例Person+name : String +age : int+birthDate : Date+getInfo() : StringStudent+school : StringSoldierOfficerGraduate+major : histo
10、ry+register() : void構(gòu)造方法不能繼承子類(lèi)繼承父類(lèi)所有的成員變量和成員方法,但不繼承父類(lèi)的構(gòu)造方法在一個(gè)Java類(lèi)中可以通過(guò)兩種方式獲得構(gòu)造方法使用系統(tǒng)默認(rèn)的無(wú)參構(gòu)造方法顯式定義一個(gè)或多個(gè)構(gòu)造方法一旦顯式定義了構(gòu)造方法,則系統(tǒng)不再提供默認(rèn)構(gòu)造方法定義共同的協(xié)議定義共同的協(xié)議通過(guò)繼承定義相關(guān)類(lèi)的共同協(xié)議方法覆蓋的規(guī)則重寫(xiě)方法的重寫(xiě)方法的重寫(xiě)在子類(lèi)中可以根據(jù)需要對(duì)從父類(lèi)中繼承來(lái)的方法進(jìn)行改造重寫(xiě)方法必須和被重寫(xiě)方法具有相同的方法名稱(chēng)、參數(shù)列表和返回值類(lèi)型重寫(xiě)方法不能使用比被重寫(xiě)方法更嚴(yán)格的訪問(wèn)權(quán)限不能拋出更大的異常方法重寫(xiě)舉例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è)類(lèi)中可以定義多個(gè)同名方法public class PrintStreampublic void println(int
12、 i) public void println(float f) public void println(String s) 重載方法的參數(shù)列表必須不同 重載方法的返回值類(lèi)型可以相同,也可以不同繼承繼承的實(shí)現(xiàn)手段是派生和擴(kuò)展實(shí)現(xiàn)了代碼重用定義共同的協(xié)議(重寫(xiě))Animal dog= new Dog();Animal cat = new Cat();通過(guò)聲明為父類(lèi)型的對(duì)象引用來(lái)引用他的子類(lèi)型對(duì)象多態(tài)多態(tài)在Java中,子類(lèi)的對(duì)象可以替代父類(lèi)的對(duì)象使用一個(gè)對(duì)象只能有一種確定的數(shù)據(jù)類(lèi)型一個(gè)引用類(lèi)型變量可能指向(引用)多種不同類(lèi)型的對(duì)象Person p = new Student();Object o
13、= new Person();o = new Student(); 多態(tài)一個(gè)引用類(lèi)型變量如果聲明為父類(lèi)的類(lèi)型,但實(shí)際引用的是子類(lèi)對(duì)象,那么該變量就不能再訪問(wèn)子類(lèi)中添加的屬性和方法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)用同類(lèi)收集( homogenous collections)MyDate m = new MyD
14、ate2;m0 = new MyDate(22, 12, 1964);m1 = new MyDate(22, 7, 1964);異類(lèi)收集(heterogeneous collections)Person p= new Person3;p0 = new Student();/學(xué)生p1 = new Person();/人p2 = new Graduate();/研究生多態(tài)性應(yīng)用方法聲明的參數(shù)類(lèi)型為父類(lèi)類(lèi)型,可以使用子類(lèi)的對(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)制類(lèi)型轉(zhuǎn)換稱(chēng)為造型從子類(lèi)到父類(lèi)的類(lèi)型轉(zhuǎn)換可以自動(dòng)進(jìn)行從父類(lèi)到子類(lèi)的類(lèi)型轉(zhuǎn)換必須通過(guò)造型(強(qiáng)制類(lèi)型轉(zhuǎn)換)實(shí)現(xiàn)無(wú)繼承關(guān)系的引用類(lèi)型間的轉(zhuǎn)換是非法的Animal a = new Dog();Dog d = (Dog)a;instanceof在casting前可以使用instanceof操作符測(cè)試一個(gè)對(duì)象的類(lèi)型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類(lèi)型及其子類(lèi)類(lèi)型對(duì)象 else if (e instanceof Graduate) /處理Graduate類(lèi)型及其子類(lèi)類(lèi)型對(duì)象 else /處理Person類(lèi)型對(duì)象Object 類(lèi)Object類(lèi)是所有Java類(lèi)的根父類(lèi)如果在類(lèi)的聲明中未使用extends關(guān)鍵字指明其父類(lèi),則默認(rèn)父類(lèi)為Object
18、類(lèi) 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)前類(lèi)類(lèi)型的對(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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 口腔解剖生理學(xué)考試模擬題及答案
- 2024年農(nóng)業(yè)植保員考試的時(shí)間壓力與調(diào)整的應(yīng)對(duì)策略試題及答案
- 提高通過(guò)率的體育經(jīng)紀(jì)人試題及答案
- 模具設(shè)計(jì)的跨界合作與結(jié)合分析試題及答案
- 2024年籃球裁判員考試的挑戰(zhàn)與機(jī)遇試題及答案
- 植保員考試中的關(guān)鍵知識(shí)點(diǎn)試題及答案分享
- 幼兒園小班衛(wèi)生教育課
- 醫(yī)院網(wǎng)絡(luò)安全教育
- 2024年游泳救生員知識(shí)點(diǎn)試題及答案
- 2024年籃球裁判員考前模擬試題及答案
- 環(huán)境設(shè)計(jì)創(chuàng)新創(chuàng)業(yè)項(xiàng)目計(jì)劃書(shū)
- 醫(yī)院網(wǎng)絡(luò)信息安全課件
- 海邁工程量清單計(jì)價(jià)軟件使用說(shuō)明書(shū)樣本
- 2023年1月浙江省普通高校招生選考高考政治真題及答案
- 第十三章-希爾德吉德·E·佩普勞的人際關(guān)系理論
- 公務(wù)用車(chē)駕駛員安全培訓(xùn)
- 急性脊髓炎治療護(hù)理課件
- 精神障礙患者的家庭護(hù)理指南
- 《咖啡理論知識(shí)》課件
- 汞中毒匯報(bào)演示課件
- 高中政治復(fù)習(xí):選必3《邏輯與思維》易錯(cuò)知識(shí)點(diǎn)匯總
評(píng)論
0/150
提交評(píng)論