chJava面向?qū)ο缶幊碳夹g(shù)_第1頁(yè)
chJava面向?qū)ο缶幊碳夹g(shù)_第2頁(yè)
chJava面向?qū)ο缶幊碳夹g(shù)_第3頁(yè)
chJava面向?qū)ο缶幊碳夹g(shù)_第4頁(yè)
chJava面向?qū)ο缶幊碳夹g(shù)_第5頁(yè)
已閱讀5頁(yè),還剩80頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 第4講 Java面向?qū)ο缶幊碳夹g(shù) 授課課時(shí):授課課時(shí):8 8課時(shí)(課時(shí)(360360分鐘)分鐘)主編:劉志成主編:劉志成2主要內(nèi)容主要內(nèi)容本課目標(biāo)本課目標(biāo)新課引入與項(xiàng)目展示新課引入與項(xiàng)目展示案例案例1 編寫描述學(xué)生的編寫描述學(xué)生的Java類類 案例案例2 編寫描述大學(xué)生的編寫描述大學(xué)生的Java類類 案例案例3 方法重載與方法重寫方法重載與方法重寫 案例案例4 定義形狀定義形狀 案例案例5 實(shí)現(xiàn)電視機(jī)遙控器實(shí)現(xiàn)電視機(jī)遙控器 案例案例6 讀取隊(duì)列元素讀取隊(duì)列元素 案例案例7 操作字符串操作字符串 課堂實(shí)踐課堂實(shí)踐鞏固與提高鞏固與提高3本課目標(biāo)知識(shí)知識(shí)目標(biāo)目標(biāo) 掌握面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念掌握

2、面向?qū)ο蟪绦蛟O(shè)計(jì)的基本概念 掌握掌握J(rèn)avaJava語(yǔ)言中類的聲明及由類創(chuàng)建對(duì)象并使用對(duì)象語(yǔ)言中類的聲明及由類創(chuàng)建對(duì)象并使用對(duì)象 掌握掌握J(rèn)avaJava語(yǔ)言中繼承的實(shí)現(xiàn)方法語(yǔ)言中繼承的實(shí)現(xiàn)方法 了解了解JavaJava語(yǔ)言應(yīng)用接口實(shí)現(xiàn)多態(tài)的方法與語(yǔ)言應(yīng)用接口實(shí)現(xiàn)多態(tài)的方法與JavaJava常用類庫(kù)常用類庫(kù) 技能技能目標(biāo)目標(biāo) 能將簡(jiǎn)單的客觀事物抽象成能將簡(jiǎn)單的客觀事物抽象成JavaJava類類 能應(yīng)用能應(yīng)用JavaJava面向?qū)ο筇攸c(diǎn)解決實(shí)際問(wèn)題面向?qū)ο筇攸c(diǎn)解決實(shí)際問(wèn)題 態(tài)度態(tài)度目標(biāo)目標(biāo)嚴(yán)謹(jǐn)認(rèn)真的工作態(tài)度嚴(yán)謹(jǐn)認(rèn)真的工作態(tài)度語(yǔ)言表達(dá)和與人溝通能力語(yǔ)言表達(dá)和與人溝通能力養(yǎng)成規(guī)范化編程的習(xí)慣養(yǎng)成規(guī)范

3、化編程的習(xí)慣4教學(xué)情境引入新課 熟練掌握類的定義,對(duì)象的創(chuàng)建及對(duì)象之間的交互,子類和抽熟練掌握類的定義,對(duì)象的創(chuàng)建及對(duì)象之間的交互,子類和抽象類的定義及多態(tài)的實(shí)現(xiàn)與使用。象類的定義及多態(tài)的實(shí)現(xiàn)與使用。 工作任務(wù)工作任務(wù)項(xiàng)目展示項(xiàng)目展示5教師示范與講解1任務(wù)一:編寫描述學(xué)生的任務(wù)一:編寫描述學(xué)生的Java類類 案例分析案例分析6 面向?qū)ο蟮幕靖拍?1 1對(duì)象對(duì)象v對(duì)象(對(duì)象(ObjectObject)就是客觀存在的任何事物。)就是客觀存在的任何事物。2 2類類 v類(類(classclass)是對(duì)象的模板。即類是對(duì)一組有相同)是對(duì)象的模板。即類是對(duì)一組有相同靜態(tài)特性和相同動(dòng)態(tài)行為的對(duì)象的抽象,

4、一個(gè)類所靜態(tài)特性和相同動(dòng)態(tài)行為的對(duì)象的抽象,一個(gè)類所包含的屬性和方法描述一組對(duì)象的共同屬性和行為包含的屬性和方法描述一組對(duì)象的共同屬性和行為。類是在對(duì)象之上的抽象,對(duì)象則是類的具體化,。類是在對(duì)象之上的抽象,對(duì)象則是類的具體化,是類的實(shí)例。是類的實(shí)例。 7 面向?qū)ο蟮幕靖拍?3 3接口接口 v如果我們把客觀世界看成由不同的系統(tǒng)(或類)組如果我們把客觀世界看成由不同的系統(tǒng)(或類)組成,這些系統(tǒng)(或類)之間需要通過(guò)一個(gè)公共的部成,這些系統(tǒng)(或類)之間需要通過(guò)一個(gè)公共的部件進(jìn)行交流,我們把這個(gè)公共的部件稱為接口(件進(jìn)行交流,我們把這個(gè)公共的部件稱為接口(InterfaceInterface)。)。

5、 4 4消息消息 v消息就是對(duì)象之間進(jìn)行通信的一種規(guī)格說(shuō)明,對(duì)象消息就是對(duì)象之間進(jìn)行通信的一種規(guī)格說(shuō)明,對(duì)象之間進(jìn)行交互作用和通信的工具。之間進(jìn)行交互作用和通信的工具。 8 面向?qū)ο蟮幕咎匦?1 1封裝性封裝性 v 封裝是一種信息隱蔽技術(shù),它體現(xiàn)于類的說(shuō)明中,是對(duì)象的重要封裝是一種信息隱蔽技術(shù),它體現(xiàn)于類的說(shuō)明中,是對(duì)象的重要特性。特性。v 封裝的目的在于把對(duì)象的設(shè)計(jì)者和對(duì)象的使用者分開,使用者不封裝的目的在于把對(duì)象的設(shè)計(jì)者和對(duì)象的使用者分開,使用者不需要知道行為實(shí)現(xiàn)的細(xì)節(jié),只需用設(shè)計(jì)者提供的消息來(lái)訪問(wèn)該對(duì)需要知道行為實(shí)現(xiàn)的細(xì)節(jié),只需用設(shè)計(jì)者提供的消息來(lái)訪問(wèn)該對(duì)象。象。 v 在在JavaJa

6、va語(yǔ)言中,類是封裝的最基本單位。語(yǔ)言中,類是封裝的最基本單位。v 封裝有助于提高類和系統(tǒng)的安全性。封裝有助于提高類和系統(tǒng)的安全性。 9 面向?qū)ο蟮幕咎匦?2 2繼承性繼承性 v 繼承是類不同抽象級(jí)別之間的關(guān)系,是子類自動(dòng)共享父類數(shù)據(jù)和繼承是類不同抽象級(jí)別之間的關(guān)系,是子類自動(dòng)共享父類數(shù)據(jù)和方法的機(jī)制。方法的機(jī)制。 3 3多態(tài)性多態(tài)性 v 對(duì)象根據(jù)所接收的消息產(chǎn)生行為,同一消息為不同的對(duì)象接收時(shí)對(duì)象根據(jù)所接收的消息產(chǎn)生行為,同一消息為不同的對(duì)象接收時(shí)可產(chǎn)生完全不同的行動(dòng),這種現(xiàn)象稱為多態(tài)性??僧a(chǎn)生完全不同的行動(dòng),這種現(xiàn)象稱為多態(tài)性。 v 多態(tài)允許對(duì)任意指定的對(duì)象自動(dòng)地使用正確的方法,并通過(guò)在

7、程多態(tài)允許對(duì)任意指定的對(duì)象自動(dòng)地使用正確的方法,并通過(guò)在程序運(yùn)行過(guò)程中將對(duì)象與恰當(dāng)?shù)姆椒ㄟM(jìn)行動(dòng)態(tài)綁定來(lái)實(shí)現(xiàn)。序運(yùn)行過(guò)程中將對(duì)象與恰當(dāng)?shù)姆椒ㄟM(jìn)行動(dòng)態(tài)綁定來(lái)實(shí)現(xiàn)。 10 類的定義 v JavaJava中的類的定義包括類聲明和類體兩部分內(nèi)容。中的類的定義包括類聲明和類體兩部分內(nèi)容。v 類聲明的格式如下:類聲明的格式如下:publicabstractfinal class 類名 extends 父類名 implements 接口名表類聲明中的關(guān)鍵字及其含義: public、 abstract、 finalv 類體的通用格式如下:類體的通用格式如下:publicabstractfinal class 類

8、名 extends 父類名 implements 接口名表 成員域(成員變量)定義部分; 方法定義部分;11 成員變量定義 v成員變量描述了類的靜態(tài)特性。成員變量描述了類的靜態(tài)特性。v類的靜態(tài)特性包括兩部分:類的特性和對(duì)象的特性信息類的靜態(tài)特性包括兩部分:類的特性和對(duì)象的特性信息。對(duì)應(yīng)的。對(duì)應(yīng)的JavaJava也將成員變量分為兩種:類變量和實(shí)例變也將成員變量分為兩種:類變量和實(shí)例變量。量。v在變量定義時(shí),可同時(shí)給其賦初值,將其初始化在變量定義時(shí),可同時(shí)給其賦初值,將其初始化 v類的成員變量定義的一般格式如下:類的成員變量定義的一般格式如下: 存取修飾符 final transient stat

9、ic volatile 類型 變量名 = 值 或表達(dá)式,變量名 = 值或表達(dá)式; 12 成員方法定義 v 方法是一個(gè)包含一條或多條語(yǔ)句的代碼塊,用來(lái)完成一個(gè)相方法是一個(gè)包含一條或多條語(yǔ)句的代碼塊,用來(lái)完成一個(gè)相對(duì)獨(dú)立的功能對(duì)獨(dú)立的功能 v 方法有自己的名稱以及可以重復(fù)使用的變量方法有自己的名稱以及可以重復(fù)使用的變量 v 與類成員變量一樣,方法也分為類方法(也稱為靜態(tài)方法)與類成員變量一樣,方法也分為類方法(也稱為靜態(tài)方法)和實(shí)例方法兩種和實(shí)例方法兩種v 類的成員方法定義的一般格式如下:類的成員方法定義的一般格式如下:存取修飾符 final staticabstractnativesynchro

10、nized 方法返回類型 方法名( 形式參數(shù)表) throws 異常表 可執(zhí)行代碼;13 課堂演示-編寫描述學(xué)生的Java類 v 【案例案例4-14-1】編寫描述學(xué)生的編寫描述學(xué)生的JavaJava類類 【案例學(xué)習(xí)目標(biāo)】【案例學(xué)習(xí)目標(biāo)】理解面向?qū)ο蟮幕靖拍睿莆绽斫饷嫦驅(qū)ο蟮幕靖拍?,掌握J(rèn)avaJava語(yǔ)言中語(yǔ)言中類的基本格式,能夠簡(jiǎn)單實(shí)現(xiàn)對(duì)客觀事物到類的基本格式,能夠簡(jiǎn)單實(shí)現(xiàn)對(duì)客觀事物到JavaJava類的抽象。類的抽象。 【案例知識(shí)要點(diǎn)案例知識(shí)要點(diǎn)】類的含義、類的定義、類的含義、類的定義、JavaJava類的聲明方法、類的聲明方法、JavaJava類體的定義方法。類體的定義方法。 【案

11、例完成步驟案例完成步驟】 學(xué)生對(duì)象分析學(xué)生對(duì)象分析 類的定義類的定義 14 課堂演示-編寫描述學(xué)生的Java類 v 學(xué)生對(duì)象分析學(xué)生對(duì)象分析項(xiàng) 目名 稱含 義屬性sName表示學(xué)生姓名,String類型bGender表示學(xué)生性別,boolean類型,false代表女iAge表示學(xué)生年齡,int類型dHeight表示學(xué)生身高,double類型dWeight表示學(xué)生體重,double類型iCounter表示學(xué)生總?cè)藬?shù),int類型方法setInfo用于設(shè)置學(xué)生相關(guān)信息的方法getInfo用于獲得學(xué)生相關(guān)信息的方法getCounter用于獲得學(xué)生總?cè)藬?shù)的方法15 課堂演示-編寫描述學(xué)生的Java類 v

12、 類的定義類的定義public class Student public class Student public static public static intint iCounteriCounter=0;=0; String String sNamesName; ; booleanboolean bGenderbGender=false; /false=false; /false代表代表 女女 intint iAgeiAge; ; double double dHeightdHeight; ; /單位為厘米單位為厘米 double double dWeightdWeight; ; /單位

13、為公斤單位為公斤 public static void public static void getCountergetCounter() () System.System.outout.println.println(學(xué)生總數(shù)學(xué)生總數(shù):+ +:+ +iCounteriCounter);); 16 課堂演示-編寫描述學(xué)生的Java類 public void public void getInfogetInfo()() System.System.outout.print.print(姓名姓名:+:+sName+tsName+t);); System.System.outout.print.pr

14、int(性別性別:+:+bGender+tbGender+t);); System.System.outout.print.print(年齡年齡:+:+iAgeiAge+歲歲t);t); System.System.outout.print.print(身高身高:+:+dHeightdHeight+厘米厘米t);t); System.System.outout.println.println(體重體重:+:+dWeightdWeight+公斤公斤);); public void public void setInfo(StringsetInfo(String n,booleann,boolea

15、n g,intg,int a,doublea,double h,doubleh,double w) w) sNamesName=n;=n; bGenderbGender=g;=g; iAgeiAge=a;=a; dHeightdHeight=h; =h; dWeightdWeight=w; =w; 17學(xué)生模仿1任務(wù)一:學(xué)生模仿完成任務(wù)一:學(xué)生模仿完成【案例案例4-1】編寫學(xué)生類編寫學(xué)生類18教師示范與講解2任務(wù)一:編寫描述大學(xué)生的任務(wù)一:編寫描述大學(xué)生的Java類類 案例分析案例分析19 創(chuàng)建對(duì)象 1 1創(chuàng)建對(duì)象的步驟創(chuàng)建對(duì)象的步驟 v在已經(jīng)定義好的類的基礎(chǔ)上,創(chuàng)建對(duì)象的過(guò)程分為在已經(jīng)定義好

16、的類的基礎(chǔ)上,創(chuàng)建對(duì)象的過(guò)程分為如下如下3 3步:步:(1)創(chuàng)建對(duì)象引用變量;(2)創(chuàng)建類的實(shí)例對(duì)象;(3)將對(duì)象的引用賦值給對(duì)象引用變量。例如:Student lisi; lisi = new Student();20 創(chuàng)建對(duì)象 2 2newnew運(yùn)算符運(yùn)算符v通過(guò)通過(guò)newnew運(yùn)算符創(chuàng)建對(duì)象時(shí),運(yùn)算符創(chuàng)建對(duì)象時(shí),JavaJava虛擬機(jī)將在堆中虛擬機(jī)將在堆中開辟一個(gè)內(nèi)存空間,用于存放對(duì)象的實(shí)例變量,并開辟一個(gè)內(nèi)存空間,用于存放對(duì)象的實(shí)例變量,并根據(jù)指定的構(gòu)造方法和類的定義初始化這些實(shí)例變根據(jù)指定的構(gòu)造方法和類的定義初始化這些實(shí)例變量。量。newnew運(yùn)算符的一般格式為:運(yùn)算符的一般格式為:

17、 對(duì)象引用變量 new 對(duì)象構(gòu)造方法;v類變量與實(shí)例變量在內(nèi)存中的不同類變量與實(shí)例變量在內(nèi)存中的不同 類變量在new之前就存在; 實(shí)例變量在new之后才有。3 3調(diào)用對(duì)象的成員調(diào)用對(duì)象的成員 v對(duì)象的成員(實(shí)例變量與實(shí)例方法)的調(diào)用采用對(duì)象的成員(實(shí)例變量與實(shí)例方法)的調(diào)用采用“.”.”運(yùn)算符,引用的一般格式為:運(yùn)算符,引用的一般格式為: 對(duì)象引用變量.類的成員 例如:例如:lisi.getInfolisi.getInfo();(); lisi.getCounterlisi.getCounter();(); 類名.類方法 類名.類變量例如:Student.getCounter;/類方法 Std

18、uent.iCounter;/類變量22 構(gòu)造方法 v 構(gòu)造方法的主要用途有兩個(gè):一是通知構(gòu)造方法的主要用途有兩個(gè):一是通知JavaJava虛擬機(jī)創(chuàng)建類的虛擬機(jī)創(chuàng)建類的對(duì)象,二是對(duì)創(chuàng)建的對(duì)象進(jìn)行初始化對(duì)象,二是對(duì)創(chuàng)建的對(duì)象進(jìn)行初始化v 如果在程序中沒有顯式的定義類的構(gòu)造方法,如果在程序中沒有顯式的定義類的構(gòu)造方法,JavaJava編譯器將編譯器將自動(dòng)提供一個(gè)構(gòu)造方法,稱為默認(rèn)構(gòu)造方法自動(dòng)提供一個(gè)構(gòu)造方法,稱為默認(rèn)構(gòu)造方法v 可以在可以在【案例案例4 4-1-1】中,添加一個(gè)構(gòu)造方法:中,添加一個(gè)構(gòu)造方法:public Student() iAge=36; dHeight=170; dWeigh

19、t=65; 怎樣使用已定義的類v在另一個(gè)類中使用已定義的類在另一個(gè)類中使用已定義的類 例如:例如:public public StudentTestStudentTest public static void public static void main(Stingmain(Sting strstr) Student Student stustu; ;stustu=new Student();=new Student();stu.setInfostu.setInfo(“(“張三張三”,true,18,170,60);”,true,18,170,60); v在定義類中使用自已定義的類在定義類中

20、使用自已定義的類 例如例如: public static void public static void main(Stingmain(Sting strstr) Student Student stustu; ;stustu=new Student();=new Student();stu.setInfostu.setInfo(“(“張三張三”,true,18,170,60);”,true,18,170,60); 對(duì)象的引用和垃圾回收v對(duì)象的引用對(duì)象的引用 一個(gè)對(duì)象可以有多個(gè)引用變量例如:Student lisi,zhangsan,st1,st2; lisi=new Student(); z

21、hangsan=new Student(); st1=lisi; st2=st1; 當(dāng)一個(gè)對(duì)象沒有引用變量引用時(shí)形成垃圾對(duì)象例如:st1=st2=lisi=zhangsan; v 棧內(nèi)存棧內(nèi)存 堆內(nèi)存堆內(nèi)存李四男17歲張三女18歲.LisiZhangsanst1st2iCounter對(duì)象的引用和垃圾回收v垃圾回收機(jī)制垃圾回收機(jī)制 垃圾收集器的清掃工作是自動(dòng)的、有計(jì)劃的、但垃圾收集器的清掃工作是自動(dòng)的、有計(jì)劃的、但也可調(diào)用也可調(diào)用System.gcSystem.gc()()立即清掃。立即清掃。27 類的繼承 v在在JavaJava中,從一個(gè)現(xiàn)有類的基礎(chǔ)上定義新的類的過(guò)程稱為派生。中,從一個(gè)現(xiàn)有類

22、的基礎(chǔ)上定義新的類的過(guò)程稱為派生。v新定義的類稱為派生類,也稱為直接子類。新定義的類稱為派生類,也稱為直接子類。v基礎(chǔ)類稱為父類或超類。這種一個(gè)類派生出另一個(gè)類的關(guān)系即為繼承關(guān)系,一個(gè)派生類將基礎(chǔ)類稱為父類或超類。這種一個(gè)類派生出另一個(gè)類的關(guān)系即為繼承關(guān)系,一個(gè)派生類將繼承其父類的所有特性和操作。繼承其父類的所有特性和操作。v如果要?jiǎng)?chuàng)建一個(gè)繼承父類的子類,只需在類的聲明中通過(guò)如果要?jiǎng)?chuàng)建一個(gè)繼承父類的子類,只需在類的聲明中通過(guò)extendsextends關(guān)鍵字指定要繼承的類名關(guān)鍵字指定要繼承的類名就可以。就可以。v子類定義的一般格式:子類定義的一般格式: publicabstractfinalp

23、ublicabstractfinal class class 類名類名 extendsextends 父類名父類名 類體類體 學(xué)生類大學(xué)生中學(xué)生小學(xué)生初中生高中生28 課堂演示-編寫描述大學(xué)生的Java類 v【案例案例4-24-2】編寫描述大學(xué)生的編寫描述大學(xué)生的JavaJava類類 【案例學(xué)習(xí)目標(biāo)】【案例學(xué)習(xí)目標(biāo)】理解繼承的基本思想,理解父類和子類的關(guān)理解繼承的基本思想,理解父類和子類的關(guān)系,能在父類的基礎(chǔ)上創(chuàng)建子類系,能在父類的基礎(chǔ)上創(chuàng)建子類 【案例知識(shí)要點(diǎn)案例知識(shí)要點(diǎn)】父類和子類的概念、子類的實(shí)現(xiàn)、父類和子類的概念、子類的實(shí)現(xiàn)、extendsextends關(guān)鍵字關(guān)鍵字 【案例完成步驟案例

24、完成步驟】 編寫程序編寫程序 編譯并運(yùn)行程序編譯并運(yùn)行程序 29 課堂演示-編寫描述大學(xué)生的Java類 v 編寫程序編寫程序public class College extends Studentpublic class College extends Studentprivate String private String sMajorsMajor; ;public void public void getMajorgetMajor()()System.System.outout.println.println(專業(yè)專業(yè):+:+sMajorsMajor);/);/調(diào)用子類的實(shí)例變量調(diào)用子類的

25、實(shí)例變量System.System.outout.println.println(身高身高:+:+dHeightdHeight);/);/引用父類的實(shí)例變量引用父類的實(shí)例變量 public static void public static void main(Stringmain(String argsargs)College College wangymwangym; ;wangymwangym=new College();=new College();wangym.getInfowangym.getInfo();/();/調(diào)用父類的實(shí)例方法調(diào)用父類的實(shí)例方法wangym.getMajor

26、wangym.getMajor();/();/調(diào)用子類的實(shí)例方法調(diào)用子類的實(shí)例方法 30 課堂演示-編寫描述大學(xué)生的Java類 v運(yùn)行結(jié)果運(yùn)行結(jié)果31學(xué)生模仿2任務(wù)一:學(xué)生模仿完成任務(wù)一:學(xué)生模仿完成【案例案例4-2】的內(nèi)容的內(nèi)容32 this和super vthisthis代表當(dāng)前對(duì)象本身。代表當(dāng)前對(duì)象本身。v通過(guò)通過(guò)thisthis變量不僅可以引用當(dāng)前對(duì)象的實(shí)例變量,變量不僅可以引用當(dāng)前對(duì)象的實(shí)例變量,也可引用當(dāng)前對(duì)象的實(shí)例方法;但由于類變量與類也可引用當(dāng)前對(duì)象的實(shí)例方法;但由于類變量與類方法不屬于具體的類對(duì)象,因此不能通過(guò)方法不屬于具體的類對(duì)象,因此不能通過(guò)thisthis變量變量引用類

27、變量和類方法,在類方法中也不能使用引用類變量和類方法,在類方法中也不能使用thisthis變量。變量。v在引用實(shí)例變量時(shí),使用在引用實(shí)例變量時(shí),使用thisthis變量是一種很好的習(xí)變量是一種很好的習(xí)慣,它能使程序更加清晰,且不容易出錯(cuò)。慣,它能使程序更加清晰,且不容易出錯(cuò)。vsupersuper代表當(dāng)前類的父類。通過(guò)代表當(dāng)前類的父類。通過(guò)supersuper可以調(diào)用父類可以調(diào)用父類的構(gòu)造方法和父類的成員(成員變量和成員方法)的構(gòu)造方法和父類的成員(成員變量和成員方法)。 33教師示范與講解3任務(wù)一:方法重載與方法重寫任務(wù)一:方法重載與方法重寫 案例分析案例分析34 方法重載與方法重寫 v方法

28、重載指類的同名方法在向其傳遞不同的參數(shù)時(shí)方法重載指類的同名方法在向其傳遞不同的參數(shù)時(shí)可以有不同的動(dòng)作,實(shí)現(xiàn)不同的功能可以有不同的動(dòng)作,實(shí)現(xiàn)不同的功能 v子類從父類中繼承方法時(shí),需要修改父類中定義的子類從父類中繼承方法時(shí),需要修改父類中定義的方法(即只修改方法體,方法的參數(shù)類型、個(gè)數(shù)、方法(即只修改方法體,方法的參數(shù)類型、個(gè)數(shù)、順序以及返回值保持相同),這就是方法的重寫順序以及返回值保持相同),這就是方法的重寫 35 課堂演示方法重載與方法重寫 v 【案例案例4-34-3】方法重載與方法重寫方法重載與方法重寫 【案例學(xué)習(xí)目標(biāo)】【案例學(xué)習(xí)目標(biāo)】理解方法重載的含義和應(yīng)用場(chǎng)合,理理解方法重載的含義和應(yīng)

29、用場(chǎng)合,理解方法重寫的含義和應(yīng)用場(chǎng)合,掌握實(shí)現(xiàn)方法重載的方解方法重寫的含義和應(yīng)用場(chǎng)合,掌握實(shí)現(xiàn)方法重載的方法,掌握實(shí)現(xiàn)方法重寫的方法,能在實(shí)際應(yīng)用中合理選法,掌握實(shí)現(xiàn)方法重寫的方法,能在實(shí)際應(yīng)用中合理選擇方法重載或方法重寫。擇方法重載或方法重寫。 【案例知識(shí)要點(diǎn)案例知識(shí)要點(diǎn)】方法重載的含義、方法重寫的含義、方法重載的含義、方法重寫的含義、方法重載的方法、方法重寫的方法。方法重載的方法、方法重寫的方法。 【案例完成步驟案例完成步驟】 編寫程序編寫程序 編譯并運(yùn)行程序編譯并運(yùn)行程序36 課堂演示-方法重載與方法重寫 v 編寫方法重載的程序編寫方法重載的程序 public class public

30、class OverLoadDemoOverLoadDemo void purchase()void purchase()System.System.outout.println.println(買菜買菜);); void void purchase(Stringpurchase(String what) what)System.System.outout.println.println(買買+what);+what); void void purchase(Stringpurchase(String what,intwhat,int number) number)System.System.

31、outout.println.println(買買+number+number+斤斤+what);+what); void void purchase(Stringpurchase(String what,Stringwhat,String where) where)System.System.outout.println.println(到到+where+where+買買+what);+what); 37 課堂演示-方法重載與方法重寫 void void purchase(Stringpurchase(String what,intwhat,int number,Stringnumber,S

32、tring where) where)System.System.outout.println.println(到到+where+where+買買+number+number+斤斤+what);+what); void void purchase(Stringpurchase(String what,intwhat,int number,Stringnumber,String where,Stringwhere,String when) when)System.System.outout.println(when.println(when+到到+where+where+買買+number+nu

33、mber+斤斤+what);+what); public static void public static void main(Stringmain(String argsargs)OverLoadDemoOverLoadDemo old=new old=new OverLoadDemoOverLoadDemo();();old.purchaseold.purchase();();old.purchaseold.purchase(大米大米););old.purchaseold.purchase(大米大米,100);,100);old.purchaseold.purchase(大米大米,步步高

34、超市步步高超市););old.purchaseold.purchase(大米大米,100,100,步步高超市步步高超市););old.purchaseold.purchase(大米大米,100,100,步步高超市步步高超市,下午下午);); 38 課堂演示-方法重載與方法重寫 v方法重載運(yùn)行結(jié)果方法重載運(yùn)行結(jié)果39 課堂演示-方法重載與方法重寫 v編寫方法重寫的程序編寫方法重寫的程序 class class StuStu String String sNamesName; ;void void display(Stringdisplay(String name) name)System.Sys

35、tem.outout.println.println(我是一名學(xué)生我是一名學(xué)生, ,我的名字是我的名字是:+name);:+name); class class CollegeStuCollegeStu extends extends StuStu String String sMajorsMajor; ;void void display(Stringdisplay(String name) name)System.System.outout.println.println(-);(-);System.System.outout.println.println(我是一名大學(xué)生我是一名大學(xué)生,

36、 ,我的名字是我的名字是:+name);:+name);sMajorsMajor=計(jì)算機(jī)計(jì)算機(jī);System.System.outout.println.println(我學(xué)習(xí)的專業(yè)是我學(xué)習(xí)的專業(yè)是:+:+sMajorsMajor);); 40 課堂演示-方法重載與方法重寫 class class MiddleStuMiddleStu extends extends StuStu String String sSubjectsSubject; ;void void display(Stringdisplay(String name) name)System.System.outout.prin

37、tln.println(-);(-);System.System.outout.println.println(我是一名中學(xué)生我是一名中學(xué)生, ,我的名字是我的名字是:+name);:+name);sSubjectsSubject=理科理科;System.System.outout.println.println(我學(xué)習(xí)的科目是我學(xué)習(xí)的科目是:+:+sSubjectsSubject);); 41 課堂演示-方法重載與方法重寫 public class public class OverrideDemoOverrideDemo public static void public static v

38、oid main(Stringmain(String argsargs)StuStu stustu=new =new StuStu();();CollegeStuCollegeStu cstucstu=new =new CollegeStuCollegeStu();();MiddleStuMiddleStu mstumstu=new =new MiddleStuMiddleStu();();StuStu s; s;s=s=stustu; ;s.displays.display(劉津劉津););s=s=cstucstu; ;s.displays.display(王詠梅王詠梅););s=s=mst

39、umstu; ;s.displays.display(劉志成劉志成);); 42 課堂演示-方法重載與方法重寫 v方法重寫運(yùn)行結(jié)果方法重寫運(yùn)行結(jié)果43學(xué)生模仿3任務(wù)一:學(xué)生模仿完成任務(wù)一:學(xué)生模仿完成【案例案例4-3】的內(nèi)容的內(nèi)容44教師示范與講解4任務(wù)一:編寫定義形狀的程序任務(wù)一:編寫定義形狀的程序案例分析案例分析45 抽象類與抽象方法 v在面向?qū)ο蠓治鲈O(shè)計(jì)時(shí),可將一些實(shí)體作高度抽象在面向?qū)ο蠓治鲈O(shè)計(jì)時(shí),可將一些實(shí)體作高度抽象定義成抽象類。抽象類沒有任何對(duì)象,只可作為一定義成抽象類。抽象類沒有任何對(duì)象,只可作為一個(gè)模板用于創(chuàng)建子類,以及為面向?qū)ο筇峁└`活個(gè)模板用于創(chuàng)建子類,以及為面向?qū)ο筇?/p>

40、供更靈活的多態(tài)機(jī)制的多態(tài)機(jī)制 大小尺寸drive()轉(zhuǎn)動(dòng)螺旋槳drive()輪船驅(qū)動(dòng)車輪滾動(dòng)汽車drive()交通工具v抽象類定義的一般格式如下:抽象類定義的一般格式如下:public abstract class 類名 extends 父類名 implements 接口名表 方法體;47 抽象類與抽象方法 v抽象類的聲明,必須在抽象類的聲明,必須在classclass關(guān)鍵字之前添加關(guān)鍵字之前添加abstractabstract關(guān)鍵字。關(guān)鍵字。v抽象類與其他類一樣,可繼承于其他類,也可實(shí)現(xiàn)抽象類與其他類一樣,可繼承于其他類,也可實(shí)現(xiàn)接口。但定義抽象類的主要目的就是為了創(chuàng)建子類接口。但定義抽象類

41、的主要目的就是為了創(chuàng)建子類,因此,因此abstractabstract類不可以是類不可以是finalfinal類。類。v抽象類中可以不包含抽象方法,但包含抽象方法的抽象類中可以不包含抽象方法,但包含抽象方法的類必須是抽象類。類必須是抽象類。 v抽象方法聲明的一般格式如下:抽象方法聲明的一般格式如下:存取修飾符 abstract 方法返回類型 方法名( 形式參數(shù)表) throws 異常表;48 課堂演示-定義形狀 v 【案例案例4-44-4】定義形狀定義形狀 【案例學(xué)習(xí)目標(biāo)】【案例學(xué)習(xí)目標(biāo)】了解抽象類的定義方法,掌握由抽象類得到了解抽象類的定義方法,掌握由抽象類得到具體類的方法,能根據(jù)實(shí)際應(yīng)用編

42、寫抽象類和具體類具體類的方法,能根據(jù)實(shí)際應(yīng)用編寫抽象類和具體類 【案例知識(shí)要點(diǎn)案例知識(shí)要點(diǎn)】抽象類的定義、抽象類和具體類的關(guān)系、抽象類的定義、抽象類和具體類的關(guān)系、abstractabstract關(guān)鍵字關(guān)鍵字 【案例完成步驟案例完成步驟】 編寫程序編寫程序 編譯并運(yùn)行程序編譯并運(yùn)行程序 49 課堂演示-定義形狀 v 編寫程序編寫程序abstract class Shapeabstract class Shapepublic abstract void public abstract void getAreagetArea();(); class Circle extends Shapeclas

43、s Circle extends Shapefinal double PI=3.1415926;final double PI=3.1415926;double double dRadiusdRadius; ;public void public void getAreagetArea()()System.System.outout.println.println(圓的面積為圓的面積為:+PI:+PI* *dRadiusdRadius* *dRadiusdRadius);); public public Circle(doubleCircle(double r) r) this.dRadius

44、this.dRadius=r;=r; 50 課堂演示-定義形狀 class Rectangle extends Shapeclass Rectangle extends Shapedouble double dLengthdLength; ;double double dWidthdWidth; ;public void public void getAreagetArea()()System.System.outout.println.println(矩形的面積為矩形的面積為:+:+dLengthdLength* *dWidthdWidth);); public public Rectang

45、le(doubleRectangle(double l,doublel,double w) w)this.dLengththis.dLength=l;=l;this.dWidththis.dWidth=w;=w; public class public class AbstractDemoAbstractDemo public static void public static void main(Stringmain(String argsargs)Circle cc=new Circle(5.6);Circle cc=new Circle(5.6);cc.getAreacc.getArea

46、();();Rectangle Rectangle rtrt=new Rectangle(8,6);=new Rectangle(8,6);rt.getAreart.getArea();(); 51 課堂演示-定義形狀 v運(yùn)行結(jié)果運(yùn)行結(jié)果52學(xué)生模仿4任務(wù)一:學(xué)生模仿完成任務(wù)一:學(xué)生模仿完成【案例案例4-4】的內(nèi)容的內(nèi)容53 Final修飾符 v出于保密或其他設(shè)計(jì)上的原因,希望類或類中成員出于保密或其他設(shè)計(jì)上的原因,希望類或類中成員變量、成員方法不被修改或重寫,可以通過(guò)變量、成員方法不被修改或重寫,可以通過(guò)JavaJava提提供的供的finalfinal修飾符來(lái)實(shí)現(xiàn)修飾符來(lái)實(shí)現(xiàn) v在類定義時(shí),

47、可使用在類定義時(shí),可使用finalfinal修飾符使類不被繼承修飾符使類不被繼承 v在定義成員變量時(shí),可通過(guò)在定義成員變量時(shí),可通過(guò)finalfinal修飾符定義常量修飾符定義常量 v在定義方法時(shí),可使用在定義方法時(shí),可使用finalfinal修飾符避免方法被子修飾符避免方法被子類重寫類重寫 54 接口定義 v接口被描述為一組方法聲明和常量的集合接口被描述為一組方法聲明和常量的集合 v接口只定義一組方法協(xié)議(或稱標(biāo)準(zhǔn)),但沒有作接口只定義一組方法協(xié)議(或稱標(biāo)準(zhǔn)),但沒有作任何具體實(shí)現(xiàn)。接口的定義與類的定義相似,其一任何具體實(shí)現(xiàn)。接口的定義與類的定義相似,其一般格式為:般格式為:public i

48、nterface 接口名 extends 父輩接口列表 常量定義 方法聲明55 實(shí)現(xiàn)接口 v 實(shí)現(xiàn)接口的定義格式如下:實(shí)現(xiàn)接口的定義格式如下:publicabstractfinal class 類名 extends 父類名 implements 接口名表 /接口體內(nèi)容1/接口方法實(shí)現(xiàn) /接口體內(nèi)容2v 與普通類的定義不同,接口實(shí)現(xiàn)必須包含與普通類的定義不同,接口實(shí)現(xiàn)必須包含“implements implements 接接口名表口名表”部分部分 v 在實(shí)現(xiàn)類中,一般必須重寫接口中聲明的所有方法。在實(shí)現(xiàn)類中,一般必須重寫接口中聲明的所有方法。v 重寫方法的名稱、返回值、修飾符必須與接口中聲明的方

49、法重寫方法的名稱、返回值、修飾符必須與接口中聲明的方法一致。一致。56教師示范與講解5任務(wù)一:編寫實(shí)現(xiàn)電視機(jī)遙控器的程序任務(wù)一:編寫實(shí)現(xiàn)電視機(jī)遙控器的程序案例分析案例分析57 課堂演示-實(shí)現(xiàn)電視機(jī)遙控器 v 【案例案例4-54-5】實(shí)現(xiàn)電視機(jī)遙控器實(shí)現(xiàn)電視機(jī)遙控器 【案例學(xué)習(xí)目標(biāo)】【案例學(xué)習(xí)目標(biāo)】進(jìn)一步理解繼承和多繼承的含義,掌進(jìn)一步理解繼承和多繼承的含義,掌握接口聲明的方法,掌握接口體定義的方法,會(huì)根據(jù)實(shí)握接口聲明的方法,掌握接口體定義的方法,會(huì)根據(jù)實(shí)際應(yīng)用編寫接口際應(yīng)用編寫接口 【案例知識(shí)要點(diǎn)案例知識(shí)要點(diǎn)】接口聲明、接口體定義、使用接口、接口聲明、接口體定義、使用接口、interfacei

50、nterface關(guān)鍵字關(guān)鍵字 【案例完成步驟案例完成步驟】 編寫接口程序編寫接口程序 編寫實(shí)現(xiàn)接口的程序編寫實(shí)現(xiàn)接口的程序 編寫測(cè)試接口的主類編寫測(cè)試接口的主類 運(yùn)行程序運(yùn)行程序 58 課堂演示-實(shí)現(xiàn)電視機(jī)遙控器 v編寫接口程序編寫接口程序 interface interface IRemoteCtrlIRemoteCtrl intint VOLUME_MINVOLUME_MIN = 0; = 0; intint VOLUME_MAXVOLUME_MAX = 100; = 100; booleanboolean powerOnOff(booleanpowerOnOff(boolean b);

51、/ b); /電源開關(guān)電源開關(guān) intint volumeUp(intvolumeUp(int increment); / increment); /聲音放大聲音放大 intint volumeDown(intvolumeDown(int decrement); / decrement); /聲音減小聲音減小 void mute();/void mute();/靜音靜音 59 課堂演示-實(shí)現(xiàn)電視機(jī)遙控器 v 編寫實(shí)現(xiàn)接口的程序(見書本)編寫實(shí)現(xiàn)接口的程序(見書本)v 編寫測(cè)試接口的主類編寫測(cè)試接口的主類public class public class TestTvCtrlTestTvCtrl

52、 public static void public static void main(Stringmain(String argsargs)TVRemoteCtrlTVRemoteCtrl tvtv=new =new TVRemoteCtrlTVRemoteCtrl(海爾海爾 H600);H600);tv.powerOnOff(truetv.powerOnOff(true););/tv.powerOnOff(falsetv.powerOnOff(false););tv.setChannel(45);tv.setChannel(45);tv.channelDowntv.channelDown(

53、);();tv.mutetv.mute();();tv.volumeUp(2);tv.volumeUp(2);tv.volumeUp(3);tv.volumeUp(3); 60 課堂演示-實(shí)現(xiàn)電視機(jī)遙控器 v運(yùn)行結(jié)果運(yùn)行結(jié)果61學(xué)生模仿5任務(wù)一:學(xué)生模仿完成任務(wù)一:學(xué)生模仿完成【案例案例4-5】的內(nèi)容的內(nèi)容62 定義包 v 在在JavaJava語(yǔ)言中,與客觀世界中系統(tǒng)相對(duì)應(yīng)的概念稱為包(語(yǔ)言中,與客觀世界中系統(tǒng)相對(duì)應(yīng)的概念稱為包(PackagePackage)。)。v 包是一種分組機(jī)制,設(shè)計(jì)者可將一組高內(nèi)聚、低耦合、關(guān)聯(lián)包是一種分組機(jī)制,設(shè)計(jì)者可將一組高內(nèi)聚、低耦合、關(guān)聯(lián)性較強(qiáng)的模型元素(可以

54、是類、接口、包)組織在一起,形性較強(qiáng)的模型元素(可以是類、接口、包)組織在一起,形成一個(gè)更高層次的單元成一個(gè)更高層次的單元v 包由一組類和接口組成。它是管理大型名字空間,避免名字包由一組類和接口組成。它是管理大型名字空間,避免名字沖突的工具。每一個(gè)類和接口的名字都包含在某個(gè)包中。沖突的工具。每一個(gè)類和接口的名字都包含在某個(gè)包中。 v 使用包的作用有兩個(gè):一是劃分類名空間,二是控制類之間使用包的作用有兩個(gè):一是劃分類名空間,二是控制類之間的訪問(wèn)。的訪問(wèn)。 v 定義包的一般格式如下:定義包的一般格式如下:package packageName;63 引入包 v 在一個(gè)類中,如果要使用其他包中的類和

55、接口則用在一個(gè)類中,如果要使用其他包中的類和接口則用importimport關(guān)關(guān)鍵詞來(lái)標(biāo)明來(lái)自其他包中的類。鍵詞來(lái)標(biāo)明來(lái)自其他包中的類。 v JavaJava提供提供importimport關(guān)鍵詞來(lái)引入包,指定包的名字,用關(guān)鍵詞來(lái)引入包,指定包的名字,用“.”.”來(lái)引用子包名和類名,用來(lái)引用子包名和類名,用“* *”匹配符可以調(diào)入多個(gè)類。匹配符可以調(diào)入多個(gè)類。 v 通常一個(gè)類只能引用與它在同一個(gè)包中的類,如果需要使用通常一個(gè)類只能引用與它在同一個(gè)包中的類,如果需要使用其他包中的其他包中的publicpublic類,則可以使用如下的幾種方法。類,則可以使用如下的幾種方法。 在要使用的類前加包名

56、用import關(guān)鍵字加載需要使用的類 用import 包名.* 關(guān)鍵字加載整個(gè)包 還可使用import static 包名.類名.*,使用時(shí)類名都可省略. 設(shè)置CLASSPATH環(huán)境變量 Java源程序的大體結(jié)構(gòu)v importimport和和import staticimport static的作用:的作用:v 使用使用importimport可以省略寫包名;可以省略寫包名;v 使用使用import staticimport static可以省略寫包名和類名。可以省略寫包名和類名。v JavaJava源程序的大體結(jié)構(gòu):源程序的大體結(jié)構(gòu):v package package 語(yǔ)句語(yǔ)句 /0/0個(gè)

57、或個(gè)或1 1個(gè),必須放在文件開始個(gè),必須放在文件開始v import|importimport|import static static 語(yǔ)句語(yǔ)句 / 0/ 0個(gè)或個(gè)或1 1個(gè),必須放在所有類定義之前個(gè),必須放在所有類定義之前v public public classDefinition|interfaceDefinitionclassDefinition|interfaceDefinition / 0 / 0個(gè)或個(gè)或1 1個(gè)公共類或接口個(gè)公共類或接口 定義定義v classDefinition|interfaceDefinitionclassDefinition|interfaceDefin

58、ition / 0 / 0個(gè)或多個(gè)普通類或接口定義個(gè)或多個(gè)普通類或接口定義65 Java常用類庫(kù) 編 號(hào)包 名功 能1java.awt包含了圖形界面設(shè)計(jì)類、布局類、事件監(jiān)聽類和圖像類2java.io包含了文件系統(tǒng)輸入/輸出相關(guān)的數(shù)據(jù)流類和對(duì)象序列化類3java.lang包含對(duì)象、線程、異常出口、系統(tǒng)、整數(shù)和字符等類的Java編程語(yǔ)言的基本類庫(kù)包含支持TCP/IP網(wǎng)絡(luò)協(xié)議類、Socket類、URL類等實(shí)現(xiàn)網(wǎng)絡(luò)通信應(yīng)用的所有類5java.util包含程序的同步類、Date類和Dictionary類等常用工具包6javax.swing包含了一系列輕量級(jí)的用戶界面組件(swing組件)類7Java.s

59、ql包含訪問(wèn)和處理來(lái)自于Java標(biāo)準(zhǔn)數(shù)據(jù)源數(shù)據(jù)的相關(guān)類(JDBC類)8java.applet包含了設(shè)計(jì)applet的類9java.beans.*提供了開發(fā)Java Beans需要的所有類10java.math.*提供了簡(jiǎn)明的整數(shù)算術(shù)以及十進(jìn)制算術(shù)的基本函數(shù)11java.rmi提供了與遠(yuǎn)程方法調(diào)用相關(guān)的所有類12java.security.*提供了設(shè)計(jì)網(wǎng)絡(luò)安全方案需要的一些類13java.test包括以一種獨(dú)立于自然語(yǔ)言的方式處理文本、日期、數(shù)字和消息的類和接口14javax.accessibility定義了用戶界面組件之間相互訪問(wèn)的一種機(jī)制15javax.naming.*為命名服務(wù)提供了一系列

60、類和接口66 數(shù)組與字符串 v數(shù)組是一種常用的數(shù)據(jù)結(jié)構(gòu),相同數(shù)據(jù)類型的元素?cái)?shù)組是一種常用的數(shù)據(jù)結(jié)構(gòu),相同數(shù)據(jù)類型的元素按一定順序排列就構(gòu)成了數(shù)組。按一定順序排列就構(gòu)成了數(shù)組。v數(shù)組中的各元素是有先后順序的,它們?cè)趦?nèi)存中按數(shù)組中的各元素是有先后順序的,它們?cè)趦?nèi)存中按照這個(gè)先后順序連續(xù)存放在一起。照這個(gè)先后順序連續(xù)存放在一起。v數(shù)組有一個(gè)成員變量數(shù)組有一個(gè)成員變量lengthlength來(lái)說(shuō)明數(shù)組元素的個(gè)數(shù)來(lái)說(shuō)明數(shù)組元素的個(gè)數(shù)。67 一維數(shù)組 v 聲明聲明一個(gè)數(shù)組其實(shí)就是要確定數(shù)組名、數(shù)組的維數(shù)和數(shù)組元素的數(shù)據(jù)類型。聲明數(shù)組的語(yǔ)法格式有兩一個(gè)數(shù)組其實(shí)就是要確定數(shù)組名、數(shù)組的維數(shù)和數(shù)組元素的數(shù)據(jù)類型

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論