




已閱讀5頁,還剩71頁未讀, 繼續(xù)免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第4講 Java面向對象編程技術,授課課時:8課時(360分鐘) 主編:劉志成,2,主要內容,本課目標 新課引入與項目展示 案例1 編寫描述學生的Java類 案例2 編寫描述大學生的Java類 案例3 方法重載與方法重寫 案例4 定義形狀 案例5 實現(xiàn)電視機遙控器 案例6 讀取隊列元素 案例7 操作字符串 課堂實踐 鞏固與提高,3,本課目標,4,教學情境引入新課,熟練掌握類的定義,對象的創(chuàng)建及對象之間的交互,子類和抽象類的定義及多態(tài)的實現(xiàn)與使用。,工作任務,項目展示,5,教師示范與講解1,任務一:編寫描述學生的Java類,案例分析,6,面向對象的基本概念,1對象 對象(Object)就是客觀存在的任何事物。 2類 類(class)是對象的模板。即類是對一組有相同靜態(tài)特性和相同動態(tài)行為的對象的抽象,一個類所包含的屬性和方法描述一組對象的共同屬性和行為。類是在對象之上的抽象,對象則是類的具體化,是類的實例。,7,面向對象的基本概念,3接口 如果我們把客觀世界看成由不同的系統(tǒng)(或類)組成,這些系統(tǒng)(或類)之間需要通過一個公共的部件進行交流,我們把這個公共的部件稱為接口(Interface)。 4消息 消息就是對象之間進行通信的一種規(guī)格說明,對象之間進行交互作用和通信的工具。,8,面向對象的基本特性,1封裝性 封裝是一種信息隱蔽技術,它體現(xiàn)于類的說明中,是對象的重要特性。 封裝的目的在于把對象的設計者和對象的使用者分開,使用者不需要知道行為實現(xiàn)的細節(jié),只需用設計者提供的消息來訪問該對象。 在Java語言中,類是封裝的最基本單位。 封裝有助于提高類和系統(tǒng)的安全性。,9,面向對象的基本特性,2繼承性 繼承是類不同抽象級別之間的關系,是子類自動共享父類數(shù)據(jù)和方法的機制。 3多態(tài)性 對象根據(jù)所接收的消息產(chǎn)生行為,同一消息為不同的對象接收時可產(chǎn)生完全不同的行動,這種現(xiàn)象稱為多態(tài)性。 多態(tài)允許對任意指定的對象自動地使用正確的方法,并通過在程序運行過程中將對象與恰當?shù)姆椒ㄟM行動態(tài)綁定來實現(xiàn)。,10,類的定義,Java中的類的定義包括類聲明和類體兩部分內容。 類聲明的格式如下: publicabstractfinal class 類名 extends 父類名 implements 接口名表 類體的通用格式如下: publicabstractfinal class 類名 extends 父類名 implements 接口名表 成員域定義部分; 方法定義部分; ,11,課堂演示-編寫描述學生的Java類,【案例4-1】判斷指定數(shù)的奇偶性 【案例學習目標】理解面向對象的基本概念,掌握Java語言中類的基本格式,能夠簡單實現(xiàn)對客觀事物到Java類的抽象。 【案例知識要點】類的含義、類的定義、Java類的聲明方法、Java類體的定義方法。 【案例完成步驟】 學生對象分析 類的定義,12,課堂演示-編寫描述學生的Java類,學生對象分析,13,課堂演示-編寫描述學生的Java類,類的定義 public class Student public static int iCounter=0; String sName; boolean bGender=false; /false代表“女“ int iAge; double dHeight; /單位為厘米 double dWeight; /單位為公斤 public static void getCounter() System.out.println(“學生總數(shù):“+ +iCounter); ,14,課堂演示-編寫描述學生的Java類,public void getInfo() System.out.print(“姓名:“+sName+“t“); System.out.print(“性別:“+bGender+“t“); System.out.print(“年齡:“+iAge+“歲t“); System.out.print(“身高:“+dHeight+“厘米t“); System.out.println(“體重:“+dWeight+“公斤“); public void setInfo(String n,boolean g,int a,double h,double w) sName=n; bGender=g; iAge=a; dHeight=h; dWeight=w; ,15,學生模仿1,16,教師示范與講解2,17,成員變量定義,成員變量描述了類的靜態(tài)特性。 類的靜態(tài)特性包括兩部分:類的特性和對象的特性信息。對應的Java也將成員變量分為兩種:類變量和實例變量。 在變量定義時,可同時給其賦初值,將其初始化 類的成員變量定義的一般格式如下: 存取修飾符 final transient static volatile 類型 變量名 = 值 或表達式,變量名 = 值或表達式;,18,成員方法定義,方法是一個包含一條或多條語句的代碼塊,用來完成一個相對獨立的功能 方法有自己的名稱以及可以重復使用的變量 與類成員變量一樣,方法也分為類方法(也稱為靜態(tài)方法)和實例方法兩種 類的成員方法定義的一般格式如下: 存取修飾符 final staticabstractnativesynchronized 方法返回類型 方法名( 形式參數(shù)表) throws 異常表 可執(zhí)行代碼; ,19,構造方法,構造方法的主要用途有兩個:一是通知Java虛擬機創(chuàng)建類的對象,二是對創(chuàng)建的對象進行初始化 如果在程序中沒有顯式的定義類的構造方法,Java編譯器將自動提供一個構造方法,稱為默認構造方法 可以在【案例4-1】中,添加一個構造方法: public Student() iAge=36; dHeight=170; dWeight=65; ,20,創(chuàng)建對象,1創(chuàng)建對象的步驟 在已經(jīng)定義好的類的基礎上,創(chuàng)建對象的過程分為如下3步: (1)創(chuàng)建對象引用變量; (2)創(chuàng)建類的實例對象; (3)將對象的引用賦值給對象引用變量。,21,創(chuàng)建對象,2new運算符 通過new運算符創(chuàng)建對象時,Java虛擬機將在堆中開辟一個內存空間,用于存放對象的實例變量,并根據(jù)指定的構造方法和類的定義初始化這些實例變量。new運算符的一般格式為: 對象引用變量 new 對象構造方法; 3調用對象的成員 對象的成員(實例變量與實例方法)的調用采用“.”運算符,引用的一般格式為: 對象引用變量.類的成員,22,類的繼承,在Java中,從一個現(xiàn)有類的基礎上定義新的類的過程稱為派生。 新定義的類稱為派生類,也稱為直接子類。 基礎類稱為父類或超類。這種一個類派生出另一個類的關系即為繼承關系,一個派生類將繼承其父類的所有特性和操作。 如果要創(chuàng)建一個繼承父類的子類,只需在類的聲明中通過extends關鍵字指定要繼承的類名就可以。,23,課堂演示-編寫描述大學生的Java類,【案例4-2】編寫描述大學生的Java類 【案例學習目標】理解繼承的基本思想,理解父類和子類的關系,能在父類的基礎上創(chuàng)建子類 【案例知識要點】父類和子類的概念、子類的實現(xiàn)、extends關鍵字 【案例完成步驟】 編寫程序 編譯并運行程序,24,課堂演示-編寫描述大學生的Java類,編寫程序 public class College extends Student private String sMajor; public void getMajor() System.out.println(“專業(yè):“+sMajor);/調用子類的實例變量 System.out.println(“身高:“+dHeight);/引用父類的實例變量 public static void main(String args) College wangym; wangym=new College(); wangym.getInfo();/調用父類的實例方法 wangym.getMajor();/調用子類的實例方法 ,25,課堂演示-編寫描述大學生的Java類,運行結果,26,學生模仿2,27,教師示范與講解3,任務一:方法重載與方法重寫,案例分析,28,this和super,this代表當前對象本身。 通過this變量不僅可以引用當前對象的實例變量,也可引用當前對象的實例方法;但由于類變量與類方法不屬于具體的類對象,因此不能通過this變量引用類變量和類方法,在類方法中也不能使用this變量。 在引用實例變量時,使用this變量是一種很好的習慣,它能使程序更加清晰,且不容易出錯。 super代表當前類的父類。通過super可以調用父類的構造方法和父類的成員(成員變量和成員方法)。,29,方法重載與方法重寫,方法重載指類的同名方法在向其傳遞不同的參數(shù)時可以有不同的動作,實現(xiàn)不同的功能 子類從父類中繼承方法時,需要修改父類中定義的方法(即只修改方法體,方法的參數(shù)類型、個數(shù)、順序以及返回值保持相同),這就是方法的重寫,30,課堂演示方法重載與方法重寫,【案例4-3】方法重載與方法重寫 【案例學習目標】理解方法重載的含義和應用場合,理解方法重寫的含義和應用場合,掌握實現(xiàn)方法重載的方法,掌握實現(xiàn)方法重寫的方法,能在實際應用中合理選擇方法重載或方法重寫。 【案例知識要點】方法重載的含義、方法重寫的含義、方法重載的方法、方法重寫的方法。 【案例完成步驟】 編寫程序 編譯并運行程序,31,課堂演示-方法重載與方法重寫,編寫方法重載的程序 public class OverLoadDemo void purchase() System.out.println(“買菜“); void purchase(String what) System.out.println(“買“+what); void purchase(String what,int number) System.out.println(“買“+number+“斤“+what); void purchase(String what,String where) System.out.println(“到“+where+“買“+what); ,32,課堂演示-方法重載與方法重寫,void purchase(String what,int number,String where) System.out.println(“到“+where+“買“+number+“斤“+what); void purchase(String what,int number,String where,String when) System.out.println(when+“到“+where+“買“+number+“斤“+what); public static void main(String args) OverLoadDemo old=new OverLoadDemo(); old.purchase(); old.purchase(“大米“); old.purchase(“大米“,100); old.purchase(“大米“,“步步高超市“); old.purchase(“大米“,100,“步步高超市“); old.purchase(“大米“,100,“步步高超市“,“下午“); ,33,課堂演示-方法重載與方法重寫,方法重載運行結果,34,課堂演示-方法重載與方法重寫,編寫方法重寫的程序 class Stu String sName; void display(String name) System.out.println(“我是一名學生,我的名字是:“+name); class CollegeStu extends Stu String sMajor; void display(String name) System.out.println(“-“); System.out.println(“我是一名大學生,我的名字是:“+name); sMajor=“計算機“; System.out.println(“我學習的專業(yè)是:“+sMajor); ,35,課堂演示-方法重載與方法重寫,class MiddleStu extends Stu String sSubject; void display(String name) System.out.println(“-“); System.out.println(“我是一名中學生,我的名字是:“+name); sSubject=“理科“; System.out.println(“我學習的科目是:“+sSubject); ,36,課堂演示-方法重載與方法重寫,public class OverrideDemo public static void main(String args) Stu stu=new Stu(); CollegeStu cstu=new CollegeStu(); MiddleStu mstu=new MiddleStu(); Stu s; s=stu; s.display(“劉津“); s=cstu; s.display(“王詠梅“); s=mstu; s.display(“劉志成“); ,37,課堂演示-方法重載與方法重寫,方法重寫運行結果,38,學生模仿3,39,教師示范與講解4,40,抽象類與抽象方法,在面向對象分析設計時,可將一些實體作高度抽象定義成抽象類。抽象類沒有任何對象,只可作為一個模板用于創(chuàng)建子類,以及為面向對象提供更靈活的多態(tài)機制 抽象類定義的一般格式如下: public abstract class 類名 extends 父類名 implements 接口名表 方法體; ,41,抽象類與抽象方法,抽象類的聲明,必須在class關鍵字之前添加abstract關鍵字。 抽象類與其他類一樣,可繼承于其他類,也可實現(xiàn)接口。但定義抽象類的主要目的就是為了創(chuàng)建子類,因此abstract類不可以是final類。 抽象類中可以不包含抽象方法,但包含抽象方法的類必須是抽象類。 抽象方法聲明的一般格式如下: 存取修飾符 abstract 方法返回類型 方法名( 形式參數(shù)表) throws 異常表;,42,Final修飾符,出于保密或其他設計上的原因,希望類或類中成員變量、成員方法不被修改或重寫,可以通過Java提供的final修飾符來實現(xiàn) 在類定義時,可使用final修飾符使類不被繼承 在定義成員變量時,可通過final修飾符定義常量 在定義方法時,可使用final修飾符避免方法被子類重寫,43,課堂演示-定義形狀,【案例4-4】定義形狀 【案例學習目標】了解抽象類的定義方法,掌握由抽象類得到具體類的方法,能根據(jù)實際應用編寫抽象類和具體類 【案例知識要點】抽象類的定義、抽象類和具體類的關系、abstract關鍵字 【案例完成步驟】 編寫程序 編譯并運行程序,44,課堂演示-定義形狀,編寫程序 abstract class Shape public abstract void getArea(); class Circle extends Shape final double PI=3.1415926; double dRadius; public void getArea() System.out.println(“圓的面積為:“+PI*dRadius*dRadius); public Circle(double r) this.dRadius=r; ,45,課堂演示-定義形狀,class Rectangle extends Shape double dLength; double dWidth; public void getArea() System.out.println(“矩形的面積為:“+dLength*dWidth); public Rectangle(double l,double w) this.dLength=l; this.dWidth=w; public class AbstractDemo public static void main(String args) Circle cc=new Circle(5.6); cc.getArea(); Rectangle rt=new Rectangle(8,6); rt.getArea(); ,46,課堂演示-定義形狀,運行結果,47,學生模仿4,48,教師示范與講解5,49,接口定義,接口被描述為一組方法聲明和常量的集合 接口只定義一組方法協(xié)議(或稱標準),但沒有作任何具體實現(xiàn)。接口的定義與類的定義相似,其一般格式為: public interface 接口名 extends 父輩接口列表 常量定義 方法聲明 ,50,實現(xiàn)接口,實現(xiàn)接口的定義格式如下: publicabstractfinal class 類名 extends 父類名 implements 接口名表 /接口體內容1 /接口方法實現(xiàn) /接口體內容2 與普通類的定義不同,接口實現(xiàn)必須包含“implements 接口名表”部分 在實現(xiàn)類中,一般必須重寫接口中聲明的所有方法。 重寫方法的名稱、返回值、修飾符必須與接口中聲明的方法一致。,51,課堂演示-實現(xiàn)電視機遙控器,【案例4-5】實現(xiàn)電視機遙控器 【案例學習目標】進一步理解繼承和多繼承的含義,掌握接口聲明的方法,掌握接口體定義的方法,會根據(jù)實際應用編寫接口 【案例知識要點】接口聲明、接口體定義、使用接口、interface關鍵字 【案例完成步驟】 編寫接口程序 編寫實現(xiàn)接口的程序 編寫測試接口的主類 運行程序,52,課堂演示-實現(xiàn)電視機遙控器,編寫接口程序 interface IRemoteCtrl int VOLUME_MIN = 0; int VOLUME_MAX = 100; boolean powerOnOff(boolean b); /電源開關 int volumeUp(int increment); /聲音放大 int volumeDown(int decrement); /聲音減小 void mute();/靜音 ,53,課堂演示-實現(xiàn)電視機遙控器,編寫實現(xiàn)接口的程序(見書本) 編寫測試接口的主類 public class TestTvCtrl public static void main(String args) TVRemoteCtrl tv=new TVRemoteCtrl(“海爾 H600“); tv.powerOnOff(true); /tv.powerOnOff(false); tv.setChannel(45); tv.channelDown(); tv.mute(); tv.volumeUp(2); tv.volumeUp(3); ,54,課堂演示-實現(xiàn)電視機遙控器,運行結果,55,學生模仿5,56,教師示范與講解6,57,定義包,在Java語言中,與客觀世界中系統(tǒng)相對應的概念稱為包(Package)。 包是一種分組機制,設計者可將一組高內聚、低耦合、關聯(lián)性較強的模型元素(可以是類、接口、包)組織在一起,形成一個更高層次的單元 包由一組類和接口組成。它是管理大型名字空間,避免名字沖突的工具。每一個類和接口的名字都包含在某個包中。 使用包的作用有兩個:一是劃分類名空間,二是控制類之間的訪問。 定義包的一般格式如下: package packageName;,58,引入包,在一個類中,如果要使用其他包中的類和接口則用import關鍵詞來標明來自其他包中的類。 Java提供import關鍵詞來引用包,指定包的名字,包括路徑名和類名,用“*”匹配符可以調入多個類。 通常一個類只能引用與它在同一個包中的類,如果需要使用其他包中的public類,則可以使用如下的幾種方法。 在要使用的類前加包名 用import關鍵字加載需要使用的類 用import關鍵字加載整個包 設置CLASSPATH環(huán)境變量,59,Java常用類庫,60,數(shù)組與字符串,數(shù)組是一種常用的數(shù)據(jù)結構,相同數(shù)據(jù)類型的元素按一定順序排列就構成了數(shù)組。 數(shù)組中的各元素是有先后順序的,它們在內存中按照這個先后順序連續(xù)存放在一起。 數(shù)組有一個成員變量length來說明數(shù)組元素的個數(shù)。 創(chuàng)建一個空數(shù)組。 int list=new int5; 用初始數(shù)值填充數(shù)組。 String names=“l(fā)iujin“,“wangym“,“Liuzc“;,61,一維數(shù)組,聲明一個數(shù)組其實就是要確定數(shù)組名、數(shù)組的維數(shù)和數(shù)組元素的數(shù)據(jù)類型。聲明數(shù)組的語法格式有兩種: 數(shù)組元素類型 數(shù)組名;或 數(shù)組元素類型 數(shù)組名; 聲明數(shù)組后,要想使用數(shù)組需要為它開辟內存空間,即創(chuàng)建數(shù)組空間。創(chuàng)建數(shù)組空間的語法格式為: 數(shù)組名=new 數(shù)組元素類型數(shù)組元素的個數(shù); 在聲明數(shù)組時“”中不允許指定數(shù)組元素的個數(shù),如int iSno6將導致語法錯誤。 正確區(qū)分“數(shù)組的第5個元素”和“數(shù)組元素5”很重要,因為數(shù)組下標從0開始,“數(shù)組的第5個元素”的下標是4,而“數(shù)組元素5”的下標是5,實際是數(shù)組的第6個元素 當數(shù)組初始化后就可通過數(shù)組名與下標來引用數(shù)組中的每一個元素。一維數(shù)組元素的引用格式如下: 數(shù)組名數(shù)組下標,62,二維數(shù)組,二維數(shù)組的聲明與一維數(shù)組相似,只是需要給出兩對方括號。格式如下 : 類型標識符 數(shù)組名;或 類型標識符 數(shù)組名; 在初始化二維數(shù)組時,可以只指定數(shù)組的行數(shù)而不給出數(shù)組的列數(shù),每一行的長度由二維數(shù)組引用時決定,但不能只指定列數(shù)而不指定行數(shù) 不指定行數(shù)只指定列數(shù)是錯誤的,63,課堂演示-讀取隊列元素,【案例4-6】讀取隊列元素 【案例學習目標】了解數(shù)組的含義,掌握數(shù)組的定義方法,掌握數(shù)組的賦值方法,掌握數(shù)組元素的引用方法,在實際編程中能夠合理地使用數(shù)組 【案例知識要點】一維數(shù)組的定義、一維數(shù)組的賦值、一維數(shù)組元素的引用 【案例完成步驟】 編寫程序 編譯并運行程序,64,課堂演示-讀取隊列元素,編寫程序 public class Queue public static void main(String args) int i; int a=new int5; for(i=0;i=0;i-) System.out.println(“a“+i+“=“+ai); ,65,課堂演示-讀取隊列元素,運行結果,66,學生模仿6,67,教師示范與講解7,68,String類,字符串是程序中的一個通用且重要的信息類型,在程序中經(jīng)常要把各種各樣的信息以字符串的形式傳遞、通信和輸出顯示,而Java為字符串操作提供了許多特殊的支持。,69,StringBuffer類,StringBuffer是字符串類String的對等類, 提供了大量的字符串功能。 String表示定長、不可變的字符序列,而StringBuffer表示變長的和可修改的字符序列,可用于動態(tài)創(chuàng)建和操作動態(tài)字符串信息。 StringBuffer支持字符或子字符串的插入或追加的操作,并可針對這些字符或子字符串的添加而自動地增加空間。,70,課堂演示-操作字符串,【案例4-7】操作字符串 【案例學習目標】了解String對象和StringBuffer對象的異同,掌握String對象的構造方法,掌握StringBuffer對象的構造方法,在實際開發(fā)中能夠合理使用String對象或StringBuffer對象提供的相關方法完成字符串的基本操作 【案例知識要點】String對象的構造方法、String對象的常用方法、StringBuffer對象的構造方法、StringBuffer對象的常用方法 【案例完成步驟】 編寫程序 編譯并運行程序,71,課堂演示-操作字符串,編寫程序 publi
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度旅游景區(qū)保安臨時工臨時服務合同
- 二零二五年度醫(yī)療貸款擔保人免責服務合同
- 二零二五年度旅游產(chǎn)品未簽合同消費者權益保障合同
- 2025年度智能制造行業(yè)勞動合同解除及保密協(xié)議模板
- 2025年度購物中心店面轉租與租賃期滿續(xù)約合同
- 天津市2025年度租賃房屋裝修與維修責任協(xié)議
- 二零二五年度美容院轉讓合同附帶技術培訓與售后服務
- 二零二五年度專業(yè)培訓機構教師團隊建設與培養(yǎng)合同
- 2025年遂寧考從業(yè)資格證貨運試題
- 2025年銀川貨運從業(yè)資格證考試題目及答案解析
- 沒頭腦和不高興-竇桂梅.精選優(yōu)秀PPT課件
- 鋼棧橋計算書(excel版)
- 租賃合同審批表
- 事業(yè)單位綜合基礎知識考試題庫 綜合基礎知識考試題庫.doc
- 巖石堅固性和穩(wěn)定性分級表
- 譯林初中英語教材目錄
- 律師事務所函[]第號
- 物業(yè)交付后工程維修工作機制
- 農作物病蟲害專業(yè)化統(tǒng)防統(tǒng)治管理辦法
- 新形勢下如何做一名合格的鄉(xiāng)鎮(zhèn)干部之我見
- 食品經(jīng)營單位經(jīng)營場所和設備布局、操作流程示意圖模板
評論
0/150
提交評論