Java語言程序設(shè)計實用教程第三版及代碼PPT課件_第1頁
Java語言程序設(shè)計實用教程第三版及代碼PPT課件_第2頁
Java語言程序設(shè)計實用教程第三版及代碼PPT課件_第3頁
Java語言程序設(shè)計實用教程第三版及代碼PPT課件_第4頁
Java語言程序設(shè)計實用教程第三版及代碼PPT課件_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、SISE Java語言程序 設(shè)計實用教程 Java語言程序設(shè)計實用教程 SISE Java語言程序 設(shè)計實用教程 第六講 接口與內(nèi)部類 SISE Java語言程序 設(shè)計實用教程 3 本章學(xué)習(xí)要點: q理解抽象類與接口 q理解內(nèi)部類及其應(yīng)用 q利用接口提供Java中多重繼承的性質(zhì) SISE Java語言程序 設(shè)計實用教程 6.1 接口-抽象類 SISE Java語言程序 設(shè)計實用教程 抽象類 l 用用abstract 修飾的類被稱為修飾的類被稱為抽象類抽象類。所謂。所謂抽象類抽象類就是沒有就是沒有 具體具體實例對象實例對象的類。的類。 l 抽象類通常包括一個或多個抽象方法(只有方法說明,沒抽象類

2、通常包括一個或多個抽象方法(只有方法說明,沒 有方法體),抽象類的子類必須完成父類定義的每一個抽有方法體),抽象類的子類必須完成父類定義的每一個抽 象方法,除非該子類也是抽象類。象方法,除非該子類也是抽象類。 l 抽象類的主要用途是用來描述抽象類的主要用途是用來描述概念性概念性的內(nèi)容,這樣可以提的內(nèi)容,這樣可以提 高開發(fā)效率,更好地統(tǒng)一用戶高開發(fā)效率,更好地統(tǒng)一用戶“接口接口”。 SISE Java語言程序 設(shè)計實用教程 定義一個抽象類 q abstract class 類名稱 q q 成員變量; q 方法(); /定義一般方法 q abstract 方法(); /定義抽象方法 q q 說明:

3、抽象類中可以包含有一般方法,也可以包 含有抽象方法;對于抽象方法不用完成其代碼實現(xiàn), 而在派生的子類中實現(xiàn)所有抽象方法。 SISE Java語言程序 設(shè)計實用教程 抽象類實現(xiàn)的例子 l如前所述你可能對抽象類的概念有點模糊,下面舉 一個具體實例來作說明。 l假設(shè)想設(shè)計一個形狀(shape)的父類CShape,由此類 可派生出圓形(circle),長方形(rectangle)于三角 形(triangle)等幾何形狀的類。則父類于子類的派 生關(guān)系描繪成如下圖所示。 CShape類 CRectangle類 CCircle 類 CTriangle 類 SISE Java語言程序 設(shè)計實用教程 l假設(shè)這些

4、幾何形狀均具有假設(shè)這些幾何形狀均具有“顏色顏色”(color)(color)這個屬性,因此可以這個屬性,因此可以 把把colorcolor這個數(shù)據(jù)成員,以及賦值這個數(shù)據(jù)成員,以及賦值colorcolor的方法均設(shè)計在父類里,的方法均設(shè)計在父類里, 讓它繼承給各個形狀的子類較為方便,如此就不用在每一個幾讓它繼承給各個形狀的子類較為方便,如此就不用在每一個幾 何形狀的子類里,設(shè)計相同的程序代碼來處理何形狀的子類里,設(shè)計相同的程序代碼來處理“顏色顏色”這個屬這個屬 性的問題。性的問題。 l另外,如果想為每一個幾何形狀的類設(shè)計一個另外,如果想為每一個幾何形狀的類設(shè)計一個area() area() 方法

5、,用方法,用 來顯示幾何形狀的面積,因每種幾何形狀的面積計算方式并不來顯示幾何形狀的面積,因每種幾何形狀的面積計算方式并不 相同,所以把相同,所以把area() area() 方法的處理方式設(shè)計在父類里并不恰當(dāng),方法的處理方式設(shè)計在父類里并不恰當(dāng), 但每一個由但每一個由CShapeCShape父類所派生出的子類又都需要用到這一個方父類所派生出的子類又都需要用到這一個方 法,因此可以在父類里只聲明法,因此可以在父類里只聲明area() area() 方法,而把方法,而把area() area() 方法方法 處理的方法留在子類里來定義,也就是說,把處理的方法留在子類里來定義,也就是說,把area(

6、) area() 聲明成抽聲明成抽 象方法即可解決這個問題。根據(jù)上述的概念,可編寫出如下的象方法即可解決這個問題。根據(jù)上述的概念,可編寫出如下的 父類程序代碼:父類程序代碼: 需求假設(shè) SISE Java語言程序 設(shè)計實用教程 abstract class CShape /abstract class CShape /定義抽象類定義抽象類 protected String color; / protected String color; /數(shù)據(jù)成員數(shù)據(jù)成員 public void setColor(String str)public void setColor(String str) colo

7、r=str; / color=str; /一般的方法一般的方法, ,用來賦值幾何形狀的顏色用來賦值幾何形狀的顏色 abstract void abstract void area();/();/抽象類內(nèi)的抽象方法抽象類內(nèi)的抽象方法 定義抽象類定義抽象類 CShape SISE Java語言程序 設(shè)計實用教程 class CCircle extends CShape CShape double radius; /數(shù)據(jù)成員 public CCircle(double r) /構(gòu)造函數(shù) radius=r; public void area() System.out.print(“Color=“+co

8、lor+”,”); System.out.print(“area=“+3.14*radius*radius); 在此處明確定義 area()的處理方法 抽象類抽象類CShape派生的子類派生的子類CCricle SISE Java語言程序 設(shè)計實用教程 class CRectangle extends CShapeclass CRectangle extends CShape int width,height;int width,height; public CRectangle (int w,int h)public CRectangle (int w,int h) width=w; wid

9、th=w; height=h; height=h; public void public void area()() System.out.print(“color=“+color+”, “);System.out.print(“color=“+color+”, “); System.out.print(“area=“+widthSystem.out.print(“area=“+width* *height);height); 抽象類抽象類CShape派生的子類派生的子類CRectangle SISE Java語言程序 設(shè)計實用教程 Public class app10-1Public cla

10、ss app10-1 public static void main (String args) public static void main (String args) CRetangle rect=new CRectangle(5,10);CRetangle rect=new CRectangle(5,10); rect.setColor(“yellow”); rect.setColor(“yellow”); rect.area(); rect.area(); CCircle cir=new CCircle(2.0)CCircle cir=new CCircle(2.0) cir.set

11、Color(“Green”); cir.setColor(“Green”); cir.area(); cir.area(); 應(yīng)用應(yīng)用 SISE Java語言程序 設(shè)計實用教程 6.1 接口-接口 SISE Java語言程序 設(shè)計實用教程 l 接口(interface)是Java所提供的另一種重要功能,它 的結(jié)構(gòu)和抽象類非常相似。接口本身也具有數(shù)據(jù)成 員與抽象方法,但它與抽象類有下列兩點不同 q接口的數(shù)據(jù)成員必須初始化。 q接口里的方法必須全部都聲明成abstract(默認(rèn)默認(rèn)),也就是說, 接口不能像抽象類一樣保有一般的方法,而必須全部是 “抽象方法 l 為什么要使用接口? q類繼承對于重用

12、超類中的代碼很有用,而Java只支持單繼 承,在遇到需要多繼承的情況,可以通過接口來幫助實現(xiàn)。 (多態(tài)性) q接口的方法可以不是繼承鏈上的類中實現(xiàn)接口的方法可以不是繼承鏈上的類中實現(xiàn),從而為相互沒有從而為相互沒有 關(guān)系的類能實現(xiàn)同樣功能的一組方法提供一種有效手段關(guān)系的類能實現(xiàn)同樣功能的一組方法提供一種有效手段 SISE Java語言程序 設(shè)計實用教程 接口的定義接口的定義 public interface 接口名接口名 extends 父接口名列表父接口名列表 /聲明常量字段聲明常量字段 publicstaticfinal 數(shù)據(jù)成員名數(shù)據(jù)成員名=常量值常量值; /聲明抽象方法聲明抽象方法 pu

13、blicabstract方法名方法名(參數(shù)表參數(shù)表); 特點: 1、接口的訪問控制修飾符只有public。 2、接口類型也可以繼承,并且可以多重繼承,使用extends。但它與類中 的extends不同,它可以有多個父接口,各父接口間用逗號隔開 3、java的類層次結(jié)構(gòu)中有一個頂級類Ojbect ,接口沒有 4、接口體內(nèi)只能聲明常量字段和抽象方法:接口中的所有常量必須是 public static final,方法必須是public abstract,這是系統(tǒng)默認(rèn)的,不管你 在定義接口時,寫不寫修飾符都是一樣的 SISE Java語言程序 設(shè)計實用教程接口的實現(xiàn)接口的實現(xiàn) class 類名類名

14、extends 父類名父類名 implements 接口名表接口名表 類體類體 1、實現(xiàn)接口可以是某個類的子類,也可以是父類。 2、一個類可以“實現(xiàn)”多個接口功能,從而實現(xiàn)多繼承多繼承, 關(guān)鍵詞implements用于表示一個類實現(xiàn)若干接口,接口名之 間用逗號隔開。 3、“繼承”后的類可以抽象類也可以是普通類,若實現(xiàn)接 口的類不是抽象類,則必須實現(xiàn)所有接口的所有方法,即為 所有的抽象方法定義方法體 4、類中實現(xiàn)方法時,必須使用與該抽象方法完全一樣的名 字、返回類型和參數(shù)表,否則,就構(gòu)成重載了,(見例6-3, P105) SISE Java語言程序 設(shè)計實用教程 6.2 內(nèi)部類 SISE Jav

15、a語言程序 設(shè)計實用教程 內(nèi)部類 l 在一個類(稱為在一個類(稱為”外部類外部類”)里定義另一個類)里定義另一個類是完 全可以的,這稱為“內(nèi)部類內(nèi)部類”。使用內(nèi)部類可以非常 方便地編寫事件驅(qū)動程序,例如圖形用戶界面程序編寫事件驅(qū)動程序,例如圖形用戶界面程序 l 內(nèi)部類是一種非常有價值的特性,它能讓你在邏輯上 將相互從屬的類組織起來,并且在類的內(nèi)部控制訪問 權(quán)限。 l 內(nèi)部類作為外部類的成員之一,可以直接訪問外部類 的其他成員 l 外部類在其方法中,通過實例化內(nèi)部類的一個對象才 能訪問內(nèi)部類的成員。 SISE Java語言程序 設(shè)計實用教程 l 在方法和作用域里的內(nèi)部類 l 內(nèi)部類可以被創(chuàng)建在方

16、法內(nèi)部,甚至是任意一個作用域里。 q 兩個理由: q 1、多重繼承:無論外部類是否已經(jīng)繼承了某個接口的實現(xiàn), 對于內(nèi)部類都沒有影響。如果沒有內(nèi)部類提供的可以繼承 多個具體的或抽象的類的能力,一些設(shè)計與編程問題就很 難解決。從這個角度看,內(nèi)部類使得多重繼承的解決方案 變得完整。(見P109,例6-4) q 2、你要處理一個復(fù)雜的問題,需要一個類,但是又不想讓 大家知道這個類 內(nèi)部類的使用內(nèi)部類的使用 SISE Java語言程序 設(shè)計實用教程 匿名內(nèi)部類 l 匿名內(nèi)部類就是沒有名字的內(nèi)部類匿名內(nèi)部類就是沒有名字的內(nèi)部類 l 如果滿足下面的一些條件,使用匿名內(nèi)部類是比較 合適的: q只用到類的一個實

17、例 q類在定義后馬上用到 q類非常?。⊿UN推薦是在4行代碼以下) q給類命名并不會導(dǎo)致你的代碼更容易被理解 l 一個匿名內(nèi)部類一定是在new的后面,用其隱含實 現(xiàn)一個接口或?qū)崿F(xiàn)一個類(P111,例6-5) SISE Java語言程序 設(shè)計實用教程 6.3 項目案例 SISE Java語言程序 設(shè)計實用教程 會員管理系統(tǒng)登陸模塊 l 網(wǎng)吧會員的上網(wǎng)注冊、下網(wǎng)注銷 l 可以計算上網(wǎng)的時間,據(jù)此結(jié)算上網(wǎng)費用,從 預(yù)存金額中扣除 SISE Java語言程序 設(shè)計實用教程數(shù)據(jù)庫設(shè)計 l會員信息表memberTable memberID(會員編號):主鍵 password(密碼) membername(

18、會員名稱) IDcardnum(會員卡號) leftmoney(預(yù)存余額) integral(積分) l上網(wǎng)記錄表record recordID(記錄表示號):主鍵 logtime(登陸時間) logouttime(退出時間) timecount(所用時間) memberID(會員編號):外鍵 SISE Java語言程序 設(shè)計實用教程 JDBC概述 lODBC存在一些缺點:不容易使用,沒有面向?qū)ο蟮奶匦浴?lJDBC(Java DataBase Connection) ,Java數(shù)據(jù)庫連接。 Sun公司在1996年提出的一項技術(shù),提供Java程序與數(shù)據(jù)庫 系統(tǒng)通信的API,主要用于進行Java

19、數(shù)據(jù)庫程序開發(fā)。 l有了JDBC API,不必為訪問Sybase、Oracle數(shù)據(jù)庫分別編 寫一個專門的程序,只需用JDBC API寫一個程序就夠了, 它可做三件事情: 與數(shù)據(jù)庫建立連接 發(fā)送SQL語句 處理結(jié)果 SISE Java語言程序 設(shè)計實用教程網(wǎng)絡(luò)庫 l數(shù)據(jù)庫驅(qū)動程序需要解決應(yīng)用程序與數(shù)據(jù)庫的通信問題。早數(shù)據(jù)庫驅(qū)動程序需要解決應(yīng)用程序與數(shù)據(jù)庫的通信問題。早 期的數(shù)據(jù)庫產(chǎn)品提供一個通過網(wǎng)絡(luò)與數(shù)據(jù)庫通信的期的數(shù)據(jù)庫產(chǎn)品提供一個通過網(wǎng)絡(luò)與數(shù)據(jù)庫通信的網(wǎng)絡(luò)庫網(wǎng)絡(luò)庫 (network libraries)(network libraries) l網(wǎng)絡(luò)庫由運行于客戶端的客戶端組件和數(shù)據(jù)庫服務(wù)器端

20、的服網(wǎng)絡(luò)庫由運行于客戶端的客戶端組件和數(shù)據(jù)庫服務(wù)器端的服 務(wù)器端組件組成。在務(wù)器端組件組成。在WindowsWindows系統(tǒng)中是以系統(tǒng)中是以DLLDLL動態(tài)鏈接庫形式動態(tài)鏈接庫形式 存在。缺點是每一種數(shù)據(jù)庫有自己的一套存在。缺點是每一種數(shù)據(jù)庫有自己的一套APIAPI,開發(fā)出的程,開發(fā)出的程 序不能獨立于數(shù)據(jù)庫序不能獨立于數(shù)據(jù)庫 l數(shù)據(jù)庫廠商后來提供一個建立在網(wǎng)絡(luò)庫之上的、統(tǒng)一的高層數(shù)據(jù)庫廠商后來提供一個建立在網(wǎng)絡(luò)庫之上的、統(tǒng)一的高層 APIAPI,開發(fā)人員調(diào)用高層,開發(fā)人員調(diào)用高層APIAPI,從而避免與數(shù)據(jù)庫產(chǎn)品緊密相,從而避免與數(shù)據(jù)庫產(chǎn)品緊密相 關(guān)的網(wǎng)絡(luò)庫關(guān)的網(wǎng)絡(luò)庫 SISE Java語

21、言程序 設(shè)計實用教程JDBC驅(qū)動程序的分類(一) l類型類型1 1驅(qū)動程序:又稱驅(qū)動程序:又稱JDBC-ODBCJDBC-ODBC橋驅(qū)動橋驅(qū)動(Bridge)(Bridge),這類,這類 驅(qū)動程序的特色是必須在使用者端的計算機上事先安裝驅(qū)動程序的特色是必須在使用者端的計算機上事先安裝 好好ODBCODBC驅(qū)動程序,然后通過驅(qū)動程序,然后通過JDBC-ODBCJDBC-ODBC的調(diào)用方法,進而的調(diào)用方法,進而 通過通過ODBCODBC類存取數(shù)據(jù)庫。類存取數(shù)據(jù)庫。 l類型類型2 2驅(qū)動程序:這類驅(qū)動程序的特色是直接將應(yīng)用程序驅(qū)動程序:這類驅(qū)動程序的特色是直接將應(yīng)用程序 與網(wǎng)絡(luò)庫連接,必須在使用驅(qū)動

22、程序的計算機上安裝網(wǎng)絡(luò)與網(wǎng)絡(luò)庫連接,必須在使用驅(qū)動程序的計算機上安裝網(wǎng)絡(luò) 庫,在性能上優(yōu)于類型庫,在性能上優(yōu)于類型1 1。 SISE Java語言程序 設(shè)計實用教程JDBC驅(qū)動程序的分類(二) l類型類型3 3驅(qū)動程序:將運用程序與應(yīng)用服務(wù)器(如驅(qū)動程序:將運用程序與應(yīng)用服務(wù)器(如WeblogicWeblogic ServerServer)連接,要求應(yīng)用服務(wù)器將應(yīng)用程序的)連接,要求應(yīng)用服務(wù)器將應(yīng)用程序的JDBCJDBC調(diào)用調(diào)用 映射到適當(dāng)?shù)臄?shù)據(jù)庫驅(qū)動程序上。優(yōu)點是客戶機上不需映射到適當(dāng)?shù)臄?shù)據(jù)庫驅(qū)動程序上。優(yōu)點是客戶機上不需 要安裝網(wǎng)絡(luò)庫,如要安裝網(wǎng)絡(luò)庫,如WebLogicWebLogic的池

23、驅(qū)動程序是一個類型的池驅(qū)動程序是一個類型3 3的的 驅(qū)動程序驅(qū)動程序 l類型類型4 4驅(qū)動程序:把驅(qū)動程序:把JDBCJDBC操作直接轉(zhuǎn)換成不使用操作直接轉(zhuǎn)換成不使用ODBCODBC或本或本 機機APIAPI的本機協(xié)議。這種驅(qū)動程序是完全用的本機協(xié)議。這種驅(qū)動程序是完全用JavaJava實現(xiàn),不實現(xiàn),不 需要其它驅(qū)動程序和客戶端網(wǎng)絡(luò)庫。此類協(xié)議由數(shù)據(jù)庫廠需要其它驅(qū)動程序和客戶端網(wǎng)絡(luò)庫。此類協(xié)議由數(shù)據(jù)庫廠 家提供,能夠?qū)崿F(xiàn)自身數(shù)據(jù)的最優(yōu)訪問家提供,能夠?qū)崿F(xiàn)自身數(shù)據(jù)的最優(yōu)訪問 SISE Java語言程序 設(shè)計實用教程JDBC驅(qū)動程序的選擇 q 目前的四種不同類型目前的四種不同類型JDBCJDBC驅(qū)

24、動程序有著不一樣的使用方法,所驅(qū)動程序有著不一樣的使用方法,所 以當(dāng)我們在連接數(shù)據(jù)庫之前,必須先依照需求選擇一個適當(dāng)?shù)囊援?dāng)我們在連接數(shù)據(jù)庫之前,必須先依照需求選擇一個適當(dāng)?shù)?驅(qū)動程序驅(qū)動程序。 q 建議不使用橋接器型的驅(qū)動程序,這類型的驅(qū)動程序不是用純建議不使用橋接器型的驅(qū)動程序,這類型的驅(qū)動程序不是用純 JAVAJAVA語言所開發(fā),這使得程序的可移植性會變差,而且還需要語言所開發(fā),這使得程序的可移植性會變差,而且還需要 事先安裝其它的特定驅(qū)動程序在使用者計算機上,非常麻煩。事先安裝其它的特定驅(qū)動程序在使用者計算機上,非常麻煩。 反觀類型三和類型四的驅(qū)動程序,不但使程序的可移植性提高,反觀類型

25、三和類型四的驅(qū)動程序,不但使程序的可移植性提高, 達到跨平臺的目的,還省去在使用者計算機上安裝其他驅(qū)動程達到跨平臺的目的,還省去在使用者計算機上安裝其他驅(qū)動程 序的麻煩,可謂一舉數(shù)得。所以當(dāng)我們在為我們的數(shù)據(jù)庫選擇序的麻煩,可謂一舉數(shù)得。所以當(dāng)我們在為我們的數(shù)據(jù)庫選擇 驅(qū)動程序時,應(yīng)盡量以驅(qū)動程序時,應(yīng)盡量以類型三和類型四類型三和類型四的的JDBCJDBC驅(qū)動程序為主,驅(qū)動程序為主, 而而類型一和二類型一和二則為次要的選擇則為次要的選擇 SISE Java語言程序 設(shè)計實用教程JDBC應(yīng)用的主要工作步驟 qJDBC主要包括以下類:連接(Connection)、語句 (Statement)和結(jié)果

26、集(Resultset)。 qJDBC應(yīng)用程序的工作步驟: q加載數(shù)據(jù)庫的JDBC驅(qū)動程序(由DriverManager類管理) q建立連接(Connection),由連接建立語句對象(三種: Statement、PreparedStatement和CallableStatement) 以及結(jié)果集(ResultSet)對象 q通過語句對象和結(jié)果集對象進行各種數(shù)據(jù)操作,最后關(guān) 閉連接 SISE Java語言程序 設(shè)計實用教程 JDBC應(yīng)用示例圖 (見115表6-1,表6-2) SISE Java語言程序 設(shè)計實用教程 通過JDBC連接數(shù)據(jù)庫的 主要步驟(一) import java.sql.*;/核心API import javax.sql;/擴展的API 加載數(shù)據(jù)庫驅(qū)動程序:使用Class.forName (“sun.jdbc.odbc.JdbcOdbcDr

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論