




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第6章 繼承知識(shí)點(diǎn)回顧面向?qū)ο蟮幕靖拍蠲嫦驅(qū)ο笏枷雽?duì)象和類(lèi)的關(guān)系類(lèi)之間的關(guān)系面向?qū)ο蟮奶卣鞣庋b繼承多態(tài)對(duì)象的創(chuàng)建、使用、銷(xiāo)毀構(gòu)造方法2本講目標(biāo)static與final關(guān)鍵字繼承繼承的概念、特征及優(yōu)點(diǎn)訪(fǎng)問(wèn)修飾符對(duì)類(lèi)成員的訪(fǎng)問(wèn)限制this與super關(guān)鍵字 3static與final關(guān)鍵字 static關(guān)鍵字static修飾的變量叫靜態(tài)變量static修飾的方法叫靜態(tài)方法static修飾的代碼塊叫靜態(tài)代碼塊編寫(xiě)一個(gè)國(guó)家類(lèi),要求該類(lèi)中有一個(gè)變量用來(lái)統(tǒng)計(jì)該類(lèi)實(shí)例化了幾個(gè)中國(guó)人對(duì)象4static與final關(guān)鍵字 靜態(tài)變量 static修飾的變量,又稱(chēng)為類(lèi)變量語(yǔ)法: static 數(shù)據(jù)類(lèi)型 變量名;
2、特征:靜態(tài)變量屬于某個(gè)類(lèi),被所有實(shí)例所共享類(lèi)變量?jī)H在生成第一個(gè)對(duì)象時(shí)分配內(nèi)存,所有實(shí)例對(duì)象共享同一個(gè)類(lèi)變量,每個(gè)實(shí)例對(duì)象對(duì)類(lèi)變量的改變都會(huì)影響到其它的實(shí)例對(duì)象??梢酝ㄟ^(guò)類(lèi)名方式或者實(shí)例名方式訪(fǎng)問(wèn)不能被this和super訪(fǎng)問(wèn)5class Chinese static int count=0; public class Test public static void main(String args) for(int i=0;i3;i+) Chinese chinese=new Chinese(); chinese.count=chinese.count+1; System.out.printl
3、n(Chinese.count);/通過(guò)類(lèi)名訪(fǎng)問(wèn)靜態(tài)變量 6使用靜態(tài)變量static與final關(guān)鍵字 static方法 static修飾的方法,又成為類(lèi)方法語(yǔ)法: 訪(fǎng)問(wèn)修飾符 static 返回?cái)?shù)據(jù)類(lèi)型 方法名(參數(shù)列表) 方法體;特征:類(lèi)方法不能訪(fǎng)問(wèn)實(shí)例變量,只能訪(fǎng)問(wèn)類(lèi)變量或類(lèi)方法。 類(lèi)方法可以由類(lèi)名直接調(diào)用,也可由實(shí)例對(duì)象進(jìn)行調(diào)用,但不規(guī)范。 78使用靜態(tài)方法class Chinese static int count=0; static void display() System.out.println(“count= ”+count); public class Test publi
4、c static void main(String args) for(int i=0;i3;i+) Chinese chinese=new Chinese(); chinese.count=chinese.count+1; Chinese.display();/通過(guò)類(lèi)名訪(fǎng)問(wèn)靜態(tài)方法 static與final關(guān)鍵字 靜態(tài)代碼塊特征:靜態(tài)代碼塊不存在于任何方法體中類(lèi)中的靜態(tài)代碼塊被自動(dòng)執(zhí)行,盡管我們產(chǎn)生了類(lèi)的多個(gè)實(shí)例對(duì)象,但其中的靜態(tài)代碼塊只被執(zhí)行了一次。當(dāng)JAVA虛擬機(jī)加載類(lèi)時(shí)被載入,靜態(tài)代碼塊被執(zhí)行,靜態(tài)塊經(jīng)常用來(lái)進(jìn)行類(lèi)屬性的初始化。 910使用靜態(tài)代碼塊class StaticBlockD
5、emo static int values=new int10; static for(int i=0;ivalues.length;i+) valuesi=(int)(100.0*Math.random(); static與final關(guān)鍵字 final關(guān)鍵字final修飾類(lèi):是最終類(lèi),不能被其他類(lèi)所繼承 public final class String final修飾變量:(成員變量或局部變量)即為常量,只能賦值一次,只能訪(fǎng)問(wèn),不能修改其值。而且通常變量名用大寫(xiě)字母。如: public static final int INCREMENT=5final修飾成員方法:是最終方法,不能被子類(lèi)重
6、寫(xiě)。 public final void display();11繼承生活中的繼承動(dòng)物食草動(dòng)物食肉動(dòng)物誰(shuí)是父類(lèi)?誰(shuí)是子類(lèi)?能說(shuō)出繼承的特點(diǎn)嗎?繼承需要符合的關(guān)系:is-a,父類(lèi)更通用、子類(lèi)更具體12生活中的繼承(續(xù))子類(lèi)具有父類(lèi)的一般特性(包括屬性和行為),以及自身特殊的特性汽車(chē)巴士是汽車(chē)嗎?卡車(chē)是汽車(chē)嗎?出租車(chē)是汽車(chē)嗎?最大載客數(shù)量報(bào)站引擎數(shù)量外觀顏色剎車(chē)加速最大載重量卸貨所屬公司最大載客數(shù)量打發(fā)票屬性行為請(qǐng)問(wèn):出租車(chē)包含哪些屬性和行為呢?13汽車(chē)小轎車(chē)卡車(chē)客車(chē)?yán)^承繼承繼承輪船交通工具繼承繼承基類(lèi)和派生類(lèi)基類(lèi)和派生類(lèi)的概念是相對(duì)的,一個(gè)類(lèi)既可以是基類(lèi),也可以是派生類(lèi)14為什么需要繼承描述兩種
7、動(dòng)物羊Sheep和狼Wolf ,各自的要求如下:Sheep屬性:名稱(chēng),重量方法:吃飯(吃草)、睡覺(jué)、呼吸、動(dòng)物描述 Wolf屬性:名稱(chēng),重量方法:吃飯(吃肉)、睡覺(jué)、呼吸、動(dòng)物描述15為什么需要繼承(續(xù))以下這個(gè)解決方案中存在著什么問(wèn)題?public class Sheep private String name;/ 名稱(chēng)private int weight;/ 重量public Sheep(String sname, int sweight) name= sname;weight = sweight;public void eat() System.out.println (Im hungr
8、y);System.out.println(I like to eat grass);public void sleep() System.out.println(Im sleeping);public void breathe() System.out.println(Im breathing);public void info()System.out.println(Hi,Im a “+name);System.out.println(My weigth is+weight);16為什么需要繼承(續(xù))public class Wolfprivate String name;/ 名稱(chēng)priv
9、ate int weight;/ 重量public Wolf(String sname, int sweight) name= sname;weight = sweight;public void eat() System.out.println(Im hungry);System.out.println(I like to eat meat);public void sleep() System.out.println(Im sleeping);public void breathe() System.out.println(Im breathing);public void info()S
10、ystem.out.println(Hi,Im a “+name);System.out.println(My weigth is+weight);17為什么需要繼承(續(xù))存在的問(wèn)題兩段代碼存在重復(fù)18為什么需要繼承(續(xù))如何改進(jìn)?有沒(méi)有可能建立繼承關(guān)系,讓子類(lèi)自動(dòng)繼承父類(lèi)的屬性和方法?Sheep是動(dòng)物嗎?Wolf是動(dòng)物嗎?屬性行為名稱(chēng)重量吃飯睡覺(jué)呼吸描述動(dòng)物SheepWolf19JAVA中的繼承語(yǔ)法 class subclass-name extends superclass-name /類(lèi)體 特征父類(lèi)通用,它具有更一般的特征和行為,較為抽象。子類(lèi)具體,它除了具有父類(lèi)的特征和行為之外,還具有
11、自己的特征和行為在繼承關(guān)系中,父類(lèi)和子類(lèi)必須滿(mǎn)足is-a的關(guān)系。父類(lèi)叫基類(lèi)、超類(lèi),子類(lèi)叫派生類(lèi)。如果子類(lèi)沒(méi)有寫(xiě)extends,則默認(rèn)該子類(lèi)的父類(lèi)為ObjectJava中只支持單繼承子類(lèi)不能繼承父類(lèi)中訪(fǎng)問(wèn)權(quán)限為private的成員變量和方法。20優(yōu)點(diǎn)通過(guò)繼承,能夠復(fù)用原有代碼,節(jié)省編程時(shí)間,并能夠減少程序代碼出錯(cuò)的可能性。在JAVA編程語(yǔ)言中,通過(guò)繼承可利用已有的類(lèi),并擴(kuò)展它的屬性和方法。這個(gè)已有的類(lèi)可以是語(yǔ)言本身提供的或其他程序員編寫(xiě)的。JAVA中所有的類(lèi)(包括我們自己定義的類(lèi))都是直接或間接繼承自java.lang.Object類(lèi)。21JAVA中的繼承定義父類(lèi)Animal及其子類(lèi)Sheep、
12、Wolf類(lèi)public class Animal private String name;/名稱(chēng) private int weight;/重量 public Animal(String sname,int sweight) name = sname; weight =sweight; public void eat() System.out.println(Im hungry); public void sleep() System.out.println(Im sleeping); public void breathe() System.out.println(Im breathing);
13、 public void info()System.out.println(Hi,Im a +name);System.out.println(My weigth is+weight); 現(xiàn)在,所有子類(lèi)中相同的代碼都抽取到父類(lèi)中了 22public class Sheep extends Animal public Sheep (String sname, int sweight) super(sname,sweight); public void eat()System.out.println(I like to eat grass);public class Wolf extends An
14、imal public Wolf (String sname, int sweight) super(sname,sweight);public void eat()System.out.println(I like to eat meat);子類(lèi)自動(dòng)繼承父類(lèi)的屬性和方法,子類(lèi)中不再存在重復(fù)代碼由于eat()方法與父類(lèi)的實(shí)現(xiàn)有所不同,因此重寫(xiě)了該方法 23Lab6_1:編寫(xiě)一個(gè)應(yīng)用程序,設(shè)計(jì)一個(gè)汽車(chē)類(lèi) Vehicle,包含的屬性有車(chē)輪個(gè)數(shù) wheels和車(chē)重weight。小車(chē)類(lèi)Car 是Vehicle 的子類(lèi),其中包含的屬性有載人數(shù) loader。卡車(chē)類(lèi) Truck 是Car類(lèi)的子類(lèi),其中包含
15、的屬性有載重量 payload。每個(gè)類(lèi)都有構(gòu)造方法和輸出相關(guān)數(shù)據(jù)的方法 。編寫(xiě)測(cè)試類(lèi)CarTest進(jìn)行測(cè)試。24JAVA中的繼承訪(fǎng)問(wèn)修飾符對(duì)類(lèi)成員的訪(fǎng)問(wèn)限制25訪(fǎng)問(wèn)修飾符訪(fǎng)問(wèn)權(quán)限private缺省的(default)protectedpublic當(dāng)前類(lèi)同一包中的類(lèi)(和繼承無(wú)關(guān)系)不同包中的子類(lèi)任何類(lèi)this與super關(guān)鍵字 thisJava中為解決變量的命名沖突和不確定性問(wèn)題,引入關(guān)鍵字“this”代表其所在方法的當(dāng)前對(duì)象。每個(gè)成員方法內(nèi)部,都有一個(gè)this引用變量,指向調(diào)用這個(gè)方法的對(duì)象,類(lèi)中的成員方法與this之間的關(guān)系如圖:26this與super關(guān)鍵字 this語(yǔ)法this(參數(shù)列表
16、):調(diào)用其他的構(gòu)造函數(shù)this.屬性名:調(diào)用本對(duì)象的屬性this.方法:調(diào)用本對(duì)象的方法this特征this不能在static上下文中使用可以在構(gòu)造方法里調(diào)用其他重載的構(gòu)造方法,采用this(參數(shù)列表)的形式,根據(jù)其中的參數(shù)列表,選擇相應(yīng)的構(gòu)造方法。使用this調(diào)用構(gòu)造方法時(shí)必須也只能放在構(gòu)造方法的第一行。27public class Animal private String name;/名稱(chēng) private int weight;/重量 public Animal(String name,int weight) =name; this.weight=weight; pub
17、lic void eat() System.out.println(Im hungry); public void sleep() System.out.println(Im sleeping); public void breathe() System.out.println(Im breathing); public void info()System.out.println(Hi,Im a +name);System.out.println(My weigth is+weight); 28this與super關(guān)鍵字 superjava中通過(guò)super來(lái)實(shí)現(xiàn)對(duì)父類(lèi)成員的訪(fǎng)問(wèn),super用來(lái)引用當(dāng)前對(duì)象的父類(lèi)。每個(gè)子類(lèi)構(gòu)造方法的第一句,都隱含了調(diào)用super()。語(yǔ)法:super(參數(shù)列表):調(diào)用父類(lèi)的構(gòu)造函數(shù)super.屬性名:調(diào)用子類(lèi)繼承的父類(lèi)屬性super.方法:調(diào)用子類(lèi)繼承的構(gòu)造方法2930pub
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年視覺(jué)傳播設(shè)計(jì)知識(shí)考察試題及答案
- 現(xiàn)場(chǎng)檢驗(yàn)員試題及答案
- 宜興小語(yǔ)面試題及答案
- 商業(yè)分析師考試成果展示試題與答案
- 2024秋三年級(jí)英語(yǔ)上冊(cè) Module 2 Introductions Unit 2 What's your name教學(xué)設(shè)計(jì) 外研版(三起)
- 初中物理中的熱平衡現(xiàn)象試題及答案
- 行政強(qiáng)制法考試題及答案
- 小自考漢語(yǔ)言文學(xué)趣味知識(shí)與試題及答案
- 26西門(mén)豹治鄴教學(xué)設(shè)計(jì)-2024-2025學(xué)年四年級(jí)上冊(cè)語(yǔ)文統(tǒng)編版
- 收納師職業(yè)發(fā)展趨勢(shì)分析試題及答案
- 骨關(guān)節(jié)病的健康教育
- 靜療橫斷面調(diào)查護(hù)理
- DB45T 1056-2014 土地整治工程 第2部分:質(zhì)量檢驗(yàn)與評(píng)定規(guī)程
- 2025年3月《提振消費(fèi)專(zhuān)項(xiàng)行動(dòng)方案》解讀學(xué)習(xí)課件
- 人教版 數(shù)學(xué)一年級(jí)下冊(cè) 第三單元 100以?xún)?nèi)數(shù)的認(rèn)識(shí)綜合素養(yǎng)評(píng)價(jià)(含答案)
- 河南省鄭州市東區(qū)2024-2025學(xué)年九年級(jí)下學(xué)期第一次數(shù)學(xué)試題試卷(卷后帶解析)
- T-CEPPC 18-2024 電力企業(yè)數(shù)字化轉(zhuǎn)型成熟度評(píng)價(jià)指南
- 2025年中考道德與法治仿真模擬測(cè)試卷(含答案)
- 房屋市政工程生產(chǎn)安全重大事故隱患判定標(biāo)準(zhǔn)(2024版)宣傳海報(bào)
- 2024年秋兒童發(fā)展問(wèn)題的咨詢(xún)與輔導(dǎo)終考期末大作業(yè)案例分析1-5答案
- DL∕T 796-2012 風(fēng)力發(fā)電場(chǎng)安全規(guī)程
評(píng)論
0/150
提交評(píng)論