




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第4講Java面向對象編程技術授課課時:8課時〔360分鐘〕主編:劉志成2主要內容本課目標新課引入與工程展示案例1—編寫描述學生的Java類案例2—編寫描述大學生的Java類案例3—方法重載與方法重寫案例4—定義形狀案例5—實現電視機遙控器案例6—讀取隊列元素案例7—操作字符串課堂實踐穩固與提高3本課目標知識目標掌握面向對象程序設計的基本概念
掌握Java語言中類的聲明及由類創建對象并使用對象掌握Java語言中繼承的實現方法了解Java語言應用接口實現多態的方法與Java常用類庫
技能目標能將簡單的客觀事物抽象成Java類
能應用Java面向對象特點解決實際問題態度目標嚴謹認真的工作態度語言表達和與人溝通能力養成規范化編程的習慣4教學情境--引入新課熟練掌握類的定義,對象的創立及對象之間的交互,子類和抽象類的定義及多態的實現與使用。工作任務工程展示5教師示范與講解--1任務一:編寫描述學生的Java類
案例分析6面向對象的根本概念1.對象對象〔Object〕就是客觀存在的任何事物。2.類類〔class〕是對象的模板。即類是對一組有相同靜態特性和相同動態行為的對象的抽象,一個類所包含的屬性和方法描述一組對象的共同屬性和行為。類是在對象之上的抽象,對象那么是類的具體化,是類的實例。7面向對象的根本概念3.接口如果我們把客觀世界看成由不同的系統〔或類〕組成,這些系統〔或類〕之間需要通過一個公共的部件進行交流,我們把這個公共的部件稱為接口〔Interface〕。4.消息消息就是對象之間進行通信的一種規格說明,對象之間進行交互作用和通信的工具。8面向對象的根本特性1.封裝性封裝是一種信息隱蔽技術,它表達于類的說明中,是對象的重要特性。封裝的目的在于把對象的設計者和對象的使用者分開,使用者不需要知道行為實現的細節,只需用設計者提供的消息來訪問該對象。在Java語言中,類是封裝的最根本單位。封裝有助于提高類和系統的平安性。9面向對象的根本特性2.繼承性繼承是類不同抽象級別之間的關系,是子類自動共享父類數據和方法的機制。
3.多態性對象根據所接收的消息產生行為,同一消息為不同的對象接收時可產生完全不同的行動,這種現象稱為多態性。多態允許對任意指定的對象自動地使用正確的方法,并通過在程序運行過程中將對象與恰當的方法進行動態綁定來實現。10類的定義
Java中的類的定義包括類聲明和類體兩局部內容。類聲明的格式如下:[public][abstract][final]class類名[extends父類名][implements接口名表]類體的通用格式如下:[public][abstract][final]class類名[extends父類名][implements接口名表]{成員域定義局部;方法定義局部;}11
課堂演示-編寫描述學生的Java類
【案例4-1】判斷指定數的奇偶性【案例學習目標】理解面向對象的根本概念,掌握Java語言中類的根本格式,能夠簡單實現對客觀事物到Java類的抽象。【案例知識要點】類的含義、類的定義、Java類的聲明方法、Java類體的定義方法。【案例完成步驟】學生對象分析類的定義12
課堂演示-編寫描述學生的Java類
學生對象分析項目名稱含義屬性sName表示學生姓名,String類型bGender表示學生性別,boolean類型,false代表"女"iAge表示學生年齡,int類型dHeight表示學生身高,double類型dWeight表示學生體重,double類型iCounter表示學生總人數,int類型方法setInfo用于設置學生相關信息的方法getInfo用于獲得學生相關信息的方法getCounter用于獲得學生總人數的方法13
課堂演示-編寫描述學生的Java類
類的定義publicclassStudent{publicstaticintiCounter=0;StringsName;booleanbGender=false;//false代表"女"intiAge;doubledHeight; //單位為厘米
doubledWeight; //單位為公斤
publicstaticvoidgetCounter(){System.out.println("學生總數:"+++iCounter);}14
課堂演示-編寫描述學生的Java類
publicvoidgetInfo(){System.out.print("姓名:"+sName+"\t");System.out.print("性別:"+bGender+"\t");System.out.print("年齡:"+iAge+"歲\t");System.out.print("身高:"+dHeight+"厘米\t");System.out.println("體重:"+dWeight+"公斤");}publicvoidsetInfo(Stringn,booleang,inta,doubleh,doublew){sName=n;bGender=g;iAge=a;dHeight=h;dWeight=w;}}15學生模仿--1任務一:學生模仿完成【案例4-1】編寫學生類16教師示范與講解--2任務一:編寫描述大學生的Java類
案例分析17成員變量定義
成員變量描述了類的靜態特性。類的靜態特性包括兩局部:類的特性和對象的特性信息。對應的Java也將成員變量分為兩種:類變量和實例變量。在變量定義時,可同時給其賦初值,將其初始化類的成員變量定義的一般格式如下:[存取修飾符][final][transient][static][volatile]類型變量名[=值或表達式][,變量名[=值或表達式]……];18成員方法定義
方法是一個包含一條或多條語句的代碼塊,用來完成一個相對獨立的功能方法有自己的名稱以及可以重復使用的變量與類成員變量一樣,方法也分為類方法〔也稱為靜態方法〕和實例方法兩種類的成員方法定義的一般格式如下:[存取修飾符][final][static][abstract][native][synchronized][方法返回類型]方法名〔[形式參數表]〕[throws異常表]{可執行代碼;}19構造方法
構造方法的主要用途有兩個:一是通知Java虛擬機創立類的對象,二是對創立的對象進行初始化如果在程序中沒有顯式的定義類的構造方法,Java編譯器將自動提供一個構造方法,稱為默認構造方法可以在【案例4-1】中,添加一個構造方法:publicStudent(){iAge=36;dHeight=170;dWeight=65;}20創立對象1.創立對象的步驟在已經定義好的類的根底上,創立對象的過程分為如下3步:〔1〕創立對象引用變量;〔2〕創立類的實例對象;〔3〕將對象的引用賦值給對象引用變量。21創立對象2.new運算符通過new運算符創立對象時,Java虛擬機將在堆中開辟一個內存空間,用于存放對象的實例變量,并根據指定的構造方法和類的定義初始化這些實例變量。new運算符的一般格式為:對象引用變量=new對象構造方法;3.調用對象的成員對象的成員〔實例變量與實例方法〕的調用采用“.”運算符,引用的一般格式為:對象引用變量.類的成員22類的繼承
在Java中,從一個現有類的根底上定義新的類的過程稱為派生。新定義的類稱為派生類,也稱為直接子類。根底類稱為父類或超類。這種一個類派生出另一個類的關系即為繼承關系,一個派生類將繼承其父類的所有特性和操作。如果要創立一個繼承父類的子類,只需在類的聲明中通過extends關鍵字指定要繼承的類名就可以。23
課堂演示-編寫描述大學生的Java類
【案例4-2】編寫描述大學生的Java類【案例學習目標】理解繼承的根本思想,理解父類和子類的關系,能在父類的根底上創立子類【案例知識要點】父類和子類的概念、子類的實現、extends關鍵字【案例完成步驟】編寫程序編譯并運行程序24
課堂演示-編寫描述大學生的Java類
編寫程序publicclassCollegeextendsStudent{ privateStringsMajor; publicvoidgetMajor(){ System.out.println("專業:"+sMajor);//調用子類的實例變量
System.out.println("身高:"+dHeight);//引用父類的實例變量
} publicstaticvoidmain(String[]args){ Collegewangym; wangym=newCollege(); wangym.getInfo();//調用父類的實例方法
wangym.getMajor();//調用子類的實例方法
}}
25
課堂演示-編寫描述大學生的Java類
運行結果26學生模仿--2任務一:學生模仿完成【案例4-2】的內容27教師示范與講解--3任務一:方法重載與方法重寫案例分析28
this和superthis代表當前對象本身。通過this變量不僅可以引用當前對象的實例變量,也可引用當前對象的實例方法;但由于類變量與類方法不屬于具體的類對象,因此不能通過this變量引用類變量和類方法,在類方法中也不能使用this變量。在引用實例變量時,使用this變量是一種很好的習慣,它能使程序更加清晰,且不容易出錯。super代表當前類的父類。通過super可以調用父類的構造方法和父類的成員〔成員變量和成員方法〕。29方法重載與方法重寫
方法重載指類的同名方法在向其傳遞不同的參數時可以有不同的動作,實現不同的功能子類從父類中繼承方法時,需要修改父類中定義的方法〔即只修改方法體,方法的參數類型、個數、順序以及返回值保持相同〕,這就是方法的重寫30
課堂演示——方法重載與方法重寫
【案例4-3】方法重載與方法重寫【案例學習目標】理解方法重載的含義和應用場合,理解方法重寫的含義和應用場合,掌握實現方法重載的方法,掌握實現方法重寫的方法,能在實際應用中合理選擇方法重載或方法重寫。
【案例知識要點】方法重載的含義、方法重寫的含義、方法重載的方法、方法重寫的方法。
【案例完成步驟】編寫程序
編譯并運行程序31
課堂演示-方法重載與方法重寫
編寫方法重載的程序publicclassOverLoadDemo{ voidpurchase(){ System.out.println("買菜"); } voidpurchase(Stringwhat){ System.out.println("買"+what); } voidpurchase(Stringwhat,intnumber){ System.out.println("買"+number+"斤"+what); } voidpurchase(Stringwhat,Stringwhere){ System.out.println("到"+where+"買"+what); }32
課堂演示-方法重載與方法重寫
voidpurchase(Stringwhat,intnumber,Stringwhere){ System.out.println("到"+where+"買"+number+"斤"+what); } voidpurchase(Stringwhat,intnumber,Stringwhere,Stringwhen){ System.out.println(when+"到"+where+"買"+number+"斤"+what); } publicstaticvoidmain(Stringargs[]){ OverLoadDemoold=newOverLoadDemo(); old.purchase(); old.purchase("大米"); old.purchase("大米",100); old.purchase("大米","步步高超市"); old.purchase("大米",100,"步步高超市"); old.purchase("大米",100,"步步高超市","下午"); }}33
課堂演示-方法重載與方法重寫
方法重載運行結果34
課堂演示-方法重載與方法重寫
編寫方法重寫的程序
classStu{ StringsName; voiddisplay(Stringname){ System.out.println("我是一名學生,我的名字是:"+name); }}classCollegeStuextendsStu{ StringsMajor; voiddisplay(Stringname){ System.out.println("-------------------------"); System.out.println("我是一名大學生,我的名字是:"+name); sMajor="計算機"; System.out.println("我學習的專業是:"+sMajor); }}35
課堂演示-方法重載與方法重寫
classMiddleStuextendsStu{ StringsSubject; voiddisplay(Stringname){ System.out.println("-------------------------"); System.out.println("我是一名中學生,我的名字是:"+name); sSubject="理科"; System.out.println("我學習的科目是:"+sSubject); }}36
課堂演示-方法重載與方法重寫
publicclassOverrideDemo{ publicstaticvoidmain(Stringargs[]){ Stustu=newStu(); CollegeStucstu=newCollegeStu(); MiddleStumstu=newMiddleStu(); Stus; s=stu; s.display("劉津"); s=cstu; s.display("王詠梅"); s=mstu; s.display("劉志成"); }}37
課堂演示-方法重載與方法重寫
方法重寫運行結果38學生模仿--3任務一:學生模仿完成【案例4-3】的內容39教師示范與講解--4任務一:編寫定義形狀的程序案例分析40抽象類與抽象方法
在面向對象分析設計時,可將一些實體作高度抽象定義成抽象類。抽象類沒有任何對象,只可作為一個模板用于創立子類,以及為面向對象提供更靈活的多態機制抽象類定義的一般格式如下:[public]abstractclass類名[extends父類名][implements接口名表]{方法體;}41抽象類與抽象方法
抽象類的聲明,必須在class關鍵字之前添加abstract關鍵字。抽象類與其他類一樣,可繼承于其他類,也可實現接口。但定義抽象類的主要目的就是為了創立子類,因此abstract類不可以是final類。抽象類中可以不包含抽象方法,但包含抽象方法的類必須是抽象類。抽象方法聲明的一般格式如下:[存取修飾符]abstract[方法返回類型]方法名〔[形式參數表]〕[throws異常表];42
Final修飾符出于保密或其他設計上的原因,希望類或類中成員變量、成員方法不被修改或重寫,可以通過Java提供的final修飾符來實現在類定義時,可使用final修飾符使類不被繼承在定義成員變量時,可通過final修飾符定義常量在定義方法時,可使用final修飾符防止方法被子類重寫43
課堂演示-定義形狀
【案例4-4】定義形狀
【案例學習目標】了解抽象類的定義方法,掌握由抽象類得到具體類的方法,能根據實際應用編寫抽象類和具體類
【案例知識要點】抽象類的定義、抽象類和具體類的關系、abstract關鍵字
【案例完成步驟】編寫程序
編譯并運行程序
44
課堂演示-定義形狀
編寫程序abstractclassShape{ publicabstractvoidgetArea();}classCircleextendsShape{ finaldoublePI=3.1415926; doubledRadius; publicvoidgetArea(){ System.out.println("圓的面積為:"+PI*dRadius*dRadius); } publicCircle(doubler) { this.dRadius=r; }}45
課堂演示-定義形狀
classRectangleextendsShape{ doubledLength; doubledWidth; publicvoidgetArea(){ System.out.println("矩形的面積為:"+dLength*dWidth); } publicRectangle(doublel,doublew){ this.dLength=l; this.dWidth=w; }}publicclassAbstractDemo{ publicstaticvoidmain(Stringargs[]){ Circlecc=newCircle(5.6); cc.getArea(); Rectanglert=newRectangle(8,6); rt.getArea(); }}46
課堂演示-定義形狀
運行結果47學生模仿--4任務一:學生模仿完成【案例4-4】的內容48教師示范與講解--5任務一:編寫實現電視機遙控器的程序案例分析49接口定義
接口被描述為一組方法聲明和常量的集合接口只定義一組方法協議〔或稱標準〕,但沒有作任何具體實現。接口的定義與類的定義相似,其一般格式為:[public]interface接口名[extends父輩接口列表]{常量定義方法聲明}50實現接口
實現接口的定義格式如下:[public][abstract][final]class類名[extends父類名]implements接口名表{//接口體內容1//接口方法實現//接口體內容2}與普通類的定義不同,接口實現必須包含“implements接口名表”局部在實現類中,一般必須重寫接口中聲明的所有方法。重寫方法的名稱、返回值、修飾符必須與接口中聲明的方法一致。51
課堂演示-實現電視機遙控器
【案例4-5】實現電視機遙控器【案例學習目標】進一步理解繼承和多繼承的含義,掌握接口聲明的方法,掌握接口體定義的方法,會根據實際應用編寫接口
【案例知識要點】接口聲明、接口體定義、使用接口、interface關鍵字
【案例完成步驟】編寫接口程序
編寫實現接口的程序
編寫測試接口的主類
運行程序
52
課堂演示-實現電視機遙控器
編寫接口程序interfaceIRemoteCtrl{intVOLUME_MIN=0;intVOLUME_MAX=100;booleanpowerOnOff(booleanb);//電源開關
intvolumeUp(intincrement);//聲音放大
intvolumeDown(intdecrement);//聲音減小
voidmute();//靜音}53
課堂演示-實現電視機遙控器
編寫實現接口的程序〔見書本〕編寫測試接口的主類publicclassTestTvCtrl{ publicstaticvoidmain(String[]args){ TVRemoteCtrltv=newTVRemoteCtrl("海爾H600"); tv.powerOnOff(true); //tv.powerOnOff(false); tv.setChannel(45); tv.channelDown(); tv.mute(); tv.volumeUp(2); tv.volumeUp(3); }}54
課堂演示-實現電視機遙控器
運行結果55學生模仿--5任務一:學生模仿完成【案例4-5】的內容56教師示范與講解--6任務一:編寫讀取隊列元素的程序案例分析57定義包
在Java語言中,與客觀世界中系統相對應的概念稱為包〔Package〕。包是一種分組機制,設計者可將一組高內聚、低耦合、關聯性較強的模型元素〔可以是類、接口、包〕組織在一起,形成一個更高層次的單元包由一組類和接口組成。它是管理大型名字空間,防止名字沖突的工具。每一個類和接口的名字都包含在某個包中。使用包的作用有兩個:一是劃分類名空間,二是控制類之間的訪問。定義包的一般格式如下:packagepackageName;58引入包
在一個類中,如果要使用其他包中的類和接口那么用import關鍵詞來標明來自其他包中的類。Java提供import關鍵詞來引用包,指定包的名字,包括路徑名和類名,用“*”匹配符可以調入多個類。通常一個類只能引用與它在同一個包中的類,如果需要使用其他包中的public類,那么可以使用如下的幾種方法。在要使用的類前加包名用import關鍵字加載需要使用的類用import關鍵字加載整個包設置CLASSPATH環境變量59
Java常用類庫編號包名功能1java.awt包含了圖形界面設計類、布局類、事件監聽類和圖像類2java.io包含了文件系統輸入/輸出相關的數據流類和對象序列化類3java.lang包含對象、線程、異常出口、系統、整數和字符等類的Java編程語言的基本類庫4包含支持TCP/IP網絡協議類、Socket類、URL類等實現網絡通信應用的所有類5java.util包含程序的同步類、Date類和Dictionary類等常用工具包6javax.swing包含了一系列輕量級的用戶界面組件(swing組件)類7Java.sql包含訪問和處理來自于Java標準數據源數據的相關類(JDBC類)8java.applet包含了設計applet的類9java.beans.*提供了開發JavaBeans需要的所有類10java.math.*提供了簡明的整數算術以及十進制算術的基本函數11java.rmi提供了與遠程方法調用相關的所有類12java.security.*提供了設計網絡安全方案需要的一些類13java.test包括以一種獨立于自然語言的方式處理文本、日期、數字和消息的類和接口14javax.accessibility定義了用戶界面組件之間相互訪問的一種機制15javax.naming.*為命名服務提供了一系列類和接口60數組與字符串
數組是一種常用的數據結構,相同數據類型的元素按一定順序排列就構成了數組。數組中的各元素是有先后順序的,它們在內存中按照這個先后順序連續存放在一起。數組有一個成員變量length來說明數組元素的個數。創立一個空數組。intlist[]=newint[5];用初始數值填充數組。Stringnames[]={"liujin","wangym","Liuzc"};61一維數組
聲明一個數組其實就是要確定數組名、數組的維數和數組元素的數據類型。聲明數組的語法格式有兩種:數組元素類型數組名[];或數組元素類型[]數組名;聲明數組后,要想使用數組需要為它開辟內存空間,即創立數組空間。創立數組空間的語法格式為:數組名=new數組元素類型[數組元素的個數];在聲明數組時“[]”中不允許指定數組元素的個數,如intiSno[6]將導致語法錯誤。正確區分“數組的第5個元素”和“數組元素5”很重要,因為數組下標從0開始,“數組的第5個元素”的下標是4,而“數組元素5”的下標是5,實際是數組的第6個元素當數組初始化后就可通過數組名與下標來引用數組中的每一個元素。一維數組元素的引用格式如下:數組名[數組下標]62二維數組
二維數組的聲明與一維數組相似,只是需要給出兩對方括號。格式如下:類型標識符數組名[][];或類型標識符[][]數組名;在初始化二維數組時,可以只指定數組的行數而不給出數組的列數,每一行的長度由二維數組引用時決定,但不能只指定列數而不指定行數不指定行數只指定列數是錯誤的63
課堂演示-讀取隊列元素
【案例4-6】讀取隊列元素【案例學習目標】了解數組的含義,掌握數組的定義方法,掌握數組的賦值方法,掌握數組元素的引用方法,在實際編程中能夠合理地使用數組
【案例知識要點】一維數組的定義、一維數組的賦值、一維數組元素的引用
【案例完成步驟】編寫程序
編譯并運行程序
64
課堂演示-讀取隊列元素
編寫程序publicclassQueue{ publicstaticvoidmain(String[]args){ inti; inta[]=newint[5]; for(i=0;i<5;i++){ a[i]=i; } for(i=a.length-1;i>=0;i--){ System.out.println("a["+i+"]="+a[i]); } }}65
課堂演示-讀取隊列元素
運行結果66學生模仿--6任務一:學生模仿完成【案例4-6】的內容67教師示范與講解--7任務一:編寫操作字符串的程序案例分析68
String類字符串是程序中的一個通用且重要的信息類型,在程序中經常要把各種各樣的信息以字符串的形式傳遞、通信和輸出顯示,而Java為字符串操作提供了許多特殊的支持。69
StringBuffer類StringBuffer是字符串類String的對等類,提供了大量的字符串功能。String表示定長、不可變的字符序列,而StringBuffer表示變長的和可修改的字符序列,可用于動態創立和操作動態字符串信息。StringBuffer支持字符或子字符串的插入或追加的操作,并可針對這些字符或子字符串的添加而自動地增加空間。70
課堂演示-操作字符串
【案例4-7】操作字符串【案例學習目標】了解String對象和StringBuffer對象的異同,掌握String對象的構造方法,掌握StringBuffer對象的構造方法,在實際開發中能夠合理使用String對象或StringBuffer對象提供的相關方法完成字符串
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論