版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
1、繼承與接口 ?繼承 ?控制符 ?接口 ?內(nèi)部類 繼承 ?繼承是一種由已有的類創(chuàng)建新類的機制,是面向 對象程序設計的基石之一。 ?子類繼承父類的屬性和方法,還可以定義新的屬 性和方法,也可以改寫父類的方法。 ?繼承實際上是存在于面向?qū)ο蟪绦蛑械膬蓚€類之 間的一種關系。 ?Java要求每個類都有父類(隱含為 java.lang包中 的Object類)。 ?super 是對父類的引用,引用父類的構(gòu)造方法、 父類成員屬性和方法。 繼承 屬性: name age salary 方法: setSalary getInfo Employee Engineer Manager Secretary Direct
2、or 屬性: allowance 方法: setAllowance getInfo 屬性: telephone department 方法: setTel getInfo 繼承增加屬性和方法 class Employee String name ; int age ; float salary ; void upSalary(float inc) salary = salary + inc ; class Manager extends Employee float allowance ; void setAllowance(float a) allowance = a ; class Dir
3、eator extends Manager String telephone ,department ; void setTel(String tel) telephone = tel ; 調(diào)用父類的構(gòu)造方法 ?子類繼承父類所有的屬性和方法(非 private), 但不繼承構(gòu)造方法。 ?子類或定義自己的構(gòu)造方法,或使用隱含構(gòu)造方 法。 ?在繼承情況下的對象初始化: ?為對象分配內(nèi)存并初始化(0、null、false) ?執(zhí)行每一層的類的顯式初始化(從父類到子類)。 ?執(zhí)行每一層的類的構(gòu)造方法 (從父類到子類) 。 調(diào)用父類構(gòu)造方法 ?為了保證安全性,在子類的構(gòu)造方法中,應首先 調(diào)用一個父類的構(gòu)
4、造方法。 ?子類可在自己的構(gòu)造方法中使用 super() 來調(diào)用 父類帶參數(shù)的構(gòu)造方法。 ?super()調(diào)用語句必須是子類構(gòu)造方法中的第一 個可執(zhí)行語句。 ?若子類 的構(gòu)造方法中沒有super()語句,系統(tǒng) 將隱含調(diào)用父類無參數(shù)構(gòu)造方法 ?若父類的構(gòu)造方法都有參數(shù),則子類必須定義自 己的構(gòu)造方法,然后通過 super()語句調(diào)用父類 的某個構(gòu)造方法。 class A int x=1 ; A() x=10; A(int p1) /p1=5 x=x+p1; class Sa extends A class Sb extends A Sb() x=x+3; Sb(int p1) /p1=5 x=x
5、+p1; Sb(int p1,int p2) /p1=5,p2=100 super(p1); x=x+p2; class Ssb extends Sb Ssb() x=x+6 ; 訪問控制符 ?訪問控制符是一組起到限定類、域或方法是否可 以被程序里的其他部分訪問和調(diào)用的修飾符 。 ?類訪問控制符 ?公共類 :public 類名 ?一般類 ?一個包中的類只能訪問另一個包中的 public類。 ?一般類只能在同一包中使用,一個包中的類不用 說明可相互訪問。 ?把常在一起協(xié)同工作的類放在一個包里是很自然 的。 ?一個類作為整體對程序的其他部分可見,并不能 代表類內(nèi)的所有域和方法也同時對程序的其他部
6、分可見,前者只是后者的必要條件 ?屬性和方法的可見性 屬性和方法的訪問限定符 當前類 同 Package 子孫 其他 Package public protected 無訪問限定符 private 屬性和方法的訪問限定符 ?為了使對象具有良好的封裝性,一般將類的非靜 態(tài)屬性設計成私有。 ?為了使其它類或?qū)ο竽軌蛟L問這些私有屬性,本 類必須提供訪問私有屬性的方法(公共方法)。 ?按照慣例,讀私有屬性的方法取名為 get 寫私有屬性的方法取名為 set ,get/set后面跟 上屬性的名稱,其中屬性的第一個字母要大寫。 這些方法在術(shù)語上叫做 Setter/Getter方法。 class Emplo
7、yee private double salary = 1800; public void setSalary(double salary) this.salary = salary; public double getSalary() return this.salary; 屬性的覆蓋(overwriting) ?如何訪問被隱藏的父類屬性: ?調(diào)用從父類繼承的方法操作的是從父類繼承的屬性。 ?使用super.屬性名。 class D200_Card extends Number_PhoneCard final double additoryFee=0.1; double balance ;
8、/ 覆蓋 boolean performDial() double getBalance() double getSuperBalance() return super.balance; / 訪問繼承屬性 方法覆蓋(overwriting) ?在面向?qū)ο蟮某绦蛟O計中,子類可以把從父類那里繼承來 的某個方法改寫,形成同父類方法同名、解決的問題也相 似、但具體實現(xiàn)和功能卻不盡一致的新方法。 ?定義與父類完全相同的方法,實現(xiàn)對父類方法的覆蓋: ?完全相同的方法名 ?完全相同的參數(shù)列表 ?完全相同類型的返回值 ?拋出的例外要相同 ?訪問權(quán)限不能縮小 ?否則就不是方法的覆蓋,而是子類自己定義與父類無關的
9、 方法,父類的方法未被覆蓋。不正確的覆蓋有時會引發(fā)編 譯時候的語法錯誤。 ?調(diào)用父類被覆蓋的方法 super.方法名 方法的覆蓋 Number_PhoneCard類: abstract boolean performDial(); double getBalance() final boolean performConnection(long cn,int pw) D200_Card類: boolean performDial() 覆蓋 實現(xiàn)抽象方法 double getBalance() 覆蓋 實現(xiàn)細節(jié)不同 抽象與抽象類 ?程序員可以先創(chuàng)建一個定義共有屬性和方法的一 般類,再從一般類派生出具
10、有特性的新類。 abstract class A abstract int min(int x, int y); int max(int x, int y) return xy ? x : y; ?抽象類不能用new創(chuàng)建對象。 接口 ?“ 接口”和抽象類有些類似。 ?接口中的方法都是沒有方法體的抽象方法。 ?接口中只能定義 static final 屬性 。 ?接口定義的僅僅是實現(xiàn)某一特定功能的一組功能 的對外接口和規(guī)范,而并沒有真正地實現(xiàn)這個功 能。 ?接口的功能實現(xiàn)是在“繼承”了這個接口的各個 類中完成的,由這些類來具體定義接口中所有抽 象方法的方法體。 ?通常把對接口的“繼承”稱為“實現(xiàn)
11、”。 接口的實現(xiàn) Object class abstract class class final class 接口 class java單重繼承 繼承 實現(xiàn) 接口的定義 public interface 接口名 extends 父接口名列表 / 常量域聲明 public static final 域類型 域名 = 常量值; / 抽象方法聲明 public abstract 返回值類型 方法名( 參數(shù)列表 ) ; ?接口是由常量和抽象方法組成的特殊類。 接口的實現(xiàn) public class MyApplet extends Applet implements Runnable , MouseLi
12、stener ?一個類只能有一個父類,但是它可以同時實現(xiàn)若 干個接口。如果把接口理解成特殊的類,那么這 個類利用接口實際上就獲得了多個父類,即實現(xiàn) 了多繼承。 ?instanceof 運算符可用來判斷一個對象的類是否 實現(xiàn)了某個接口。 接口例 interface CalArea double pi = 3.14 ; double calRArea(double r) ; public class CalAreaImp implements CalArea public double calRArea(double r) return pi * r *r ; public static void
13、 main(String args) CalAreaImp imp=new CalAreaImp(); if(imp instanceof CalArea) /此處返回true System.out.println( imp.calRArea(5); 接口的規(guī)定 ?類定義中使用 implements 指定實現(xiàn)某一接口 ?類中必須具體實現(xiàn)該 interface 中定義的抽象方 法。 ?實現(xiàn)的方法必須指定為 public限定符。 ?實現(xiàn)接口的類要實現(xiàn)接口的全部方法。如果不需 要某個方法,也要定義成一個空方法體的方法。 public 方法名() 接口類型的變量和實現(xiàn)類的實例 ?可以聲明接口類型的變量
14、和接口類型的參數(shù)。 ?接口的實現(xiàn)類和接口之間的存在著類型兼容性, 由于這個原因,所以: ?接口類型的變量可以接受傳遞給它的實現(xiàn)類的實例 ?接口類型的參數(shù)可以接受傳遞給它的實現(xiàn)類的實例 ?利用接口類型的變量或參數(shù)存儲實現(xiàn)類的實例, 是面向?qū)ο缶幊痰闹匾椒?多態(tài) 接口類型變量和參數(shù)示例 interface I void doSome(); class IC1 implements I/接口I的實現(xiàn)類IC1 public void doSome() System.out.println(IC1 impl); class IC2 implements I/接口I的另一個實現(xiàn)類 public void
15、 doSome() System.out.println(IC2 impl); class Test static void testI(I i) /接口類型的參數(shù) i.doSome(); /見下頁 接口類型變量和參數(shù)示例(續(xù)) /接上頁 public static void main( String s) /接口類型的變量i,賦予IC1的實例 I i = new IC1(); i.doSome(); /此時調(diào)用IC1中的實現(xiàn)方法 /將IC2的實例賦予i i = new IC2(); i.doSome(); /此時調(diào)用IC2中的實現(xiàn)方法 /將i作為參數(shù)傳遞 testI(i); /此時直接將IC1的實例作為實參傳遞給testI testI(new IC1(); /main /Test 內(nèi)部類(inner class) ?在某個類
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 采購合同的談判要點3篇
- 采購合同風險評估和防范3篇
- 采購合同流程的評審與監(jiān)控3篇
- 采購合同協(xié)議模板3篇
- 采購合同中的包裝要求解讀3篇
- 采購合同樣本的印地語3篇
- 采購安裝合同范文3篇
- 采購合同的保密條款說明3篇
- 采購合同中的工程進度要求3篇
- 采購合同框架協(xié)議的利益分配3篇
- 設計素描構(gòu)圖
- 菜市場攤販與管理方合作經(jīng)營協(xié)議書
- 三年級下冊英語說課稿-《Lesson 11 What Do They Eat》|冀教版(三起)
- 2023春國家開放大學-02154數(shù)據(jù)庫應用技術(shù)-期末考試題帶答案
- 商品和服務稅收分類編碼(開票指引)
- 山西省靈丘縣山西省刁泉銀銅礦業(yè)有限公司銀、銅礦資源開發(fā)利用、地質(zhì)環(huán)境保護與土地復墾方案
- 國家開放大學《市場營銷學》形考1-4答案
- 瀝青路面設計說明
- 《膽囊結(jié)石的護理》PPT
- 藥品質(zhì)量受權(quán)人管理規(guī)程
- 校本課程之《紅樓夢詩詞曲賞析》教案
評論
0/150
提交評論