Java程序設計教程(第2版) 課件 第4章面向對象-上_第1頁
Java程序設計教程(第2版) 課件 第4章面向對象-上_第2頁
Java程序設計教程(第2版) 課件 第4章面向對象-上_第3頁
Java程序設計教程(第2版) 課件 第4章面向對象-上_第4頁
Java程序設計教程(第2版) 課件 第4章面向對象-上_第5頁
已閱讀5頁,還剩38頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第4周

面向對象基礎11面向對象2類的定義3對象實例化與銷毀4定義包和引入類學習提綱5讓我們一起來編程21.面向對象面向對象是一種對現(xiàn)實世界理解和抽象的方法。在面向對象眼中,萬事萬物皆為對象。如同事物一樣,每個對象都有自己的屬性,具備一些行為;對象之間也存在各種各樣的聯(lián)系,也可以進行通信。面向對象克服了面向過程的缺點,達到了軟件工程的三個主要目標:可重用性、靈活性和擴展性。在Java語言中,編程的基本單位是類,類可以實例化成多個對象。面向對象的概念包括:封裝、繼承、多態(tài)、類和對象、接口、包、屬性、方法、構造方法、修飾符、上溯下溯造型、泛型等。1.1什么是面向對象?31.面向對象面向對象的四大特征:抽象、封裝、繼承和多態(tài)。1.抽象:指從眾多的事物中舍棄個別的、非本質的部分,提煉出我們所關注的、共同的、本質的部分的過程。2.封裝:在Java中,類封裝了屬性、方法、構造方法、語句塊、內部類等成員,可以通過權限修飾符來控制外部對類成員的可訪問性,隱藏其實現(xiàn)細節(jié)。1.2面向對象的四大特征41.面向對象面向對象的四大特征:抽象、封裝、繼承和多態(tài)。1.抽象:指從眾多的事物中舍棄個別的、非本質的部分,提煉出我們所關注的、共同的、本質的部分的過程。2.封裝:在Java中,類封裝了屬性、方法、構造方法、語句塊、內部類等成員,可以通過權限修飾符來控制外部對類成員的可訪問性,隱藏其實現(xiàn)細節(jié)。1.2面向對象的四大特征51.面向對象3.繼承:以已有的類為基礎來創(chuàng)建一個新的子類,子類繼承父類的所有特性,并可以在此基礎上擴充自己的特性,從而構造出更為復雜的類型。繼承很好地解決了軟件的可重用性問題。4.多態(tài):指同一個實體同時具有多種形式,主要表現(xiàn)為方法的重載、方法的覆蓋、對象的多態(tài)等三種形式。通過多態(tài),就能對“通用情況”編程,而不是對“特定情況”進行編程。方法的重載通過查閱JDK

API幫助文檔可以直觀地理解。1.2面向對象的四大特征61.面向對象

【示例程序3-1】自定義日期類(MyDate.java)功能描述:MyDate類有年、月、日三個私有屬性;提供了無參和包含全部屬性的構造方法,構造方法的重載;私有屬性提供了Getter和Setter方法以供外界讀??;方法的覆蓋?!臼纠绦?-2】類繼承應用示例(EmployeeTeacherTest.java)功能描述:職工類有身份證號、姓名、部門三個屬性,工作方法。教師類繼承了職工類,在職工類的基礎上增加了課時屬性和上課方法,并進行了測試。1.2面向對象的四大特征71面向對象2類的定義3對象實例化與銷毀4定義包和引入類學習提綱5讓我們一起來編程82.類的定義類(Class)是對一類相似事物的描述,側重對同類事物的共性進行抽象、概括、歸納。對象(Object)也叫實例(Instance),萬事萬物皆為對象。對象是信息系統(tǒng)必須覺察到的問題域中的人或事物的抽象,突出個性、特殊。在Java中,對象是通過類的實例化來創(chuàng)建的。一個類可以實例化多個該類的對象,因此,類和對象之間是一對多的關系。92.類的定義Java類的語法格式如下:[類修飾符]class<類名>[extends<父類名>][implements<接口列表>]{[初始化語句塊][成員變量][構造方法][成員方法][內部類]……}2.1類的定義102.類的定義1.類修飾符(modifier)說明類只有兩個權限控制符:public或缺省。用abstract修飾的類叫抽象類。抽象類只能被繼承,不能被實例化。用final修飾的類叫最終類,只能被實例化,不能被繼承。2.extends<父類>:用來指定要繼承的父類。3.implements<接口列表>:指定要實現(xiàn)的接口。一個類實現(xiàn)一個接口,即必須實現(xiàn)該接口中所有抽象方法,否則這個類只能是抽象類。2.1類的定義112.類的定義4.Java類封裝了以下成員:成員變量(Variable)也稱為字段(Field)或屬性(Attribute):有static修飾的變量為類變量,描述類的靜態(tài)特征;沒有static修飾的變量為對象變量,描述對象的靜態(tài)特征。成員方法(Method),也稱為函數(shù)(Function):有static修飾的方法為類方法,描述類的動態(tài)特征(行為);沒有static修飾的方法為對象方法,描述對象的動態(tài)特征(行為)。2.1類的定義122.類的定義構造方法(Constructor):用于實例化對象。內部類(InnerClass):在類體、方法體中定義的類。語句塊:分為有static修飾的靜態(tài)語句塊和沒有static修飾的非靜態(tài)語句塊。

【編程實踐】在俄羅斯方塊程序中找一下以上類的成員。2.1類的定義132.類的定義成員變量指定義在類中方法外的變量或常量。成員變量的有效范圍是整個類,相當于全局變量。語法格式如下:[成員變量修飾符]<數(shù)據(jù)類型>變量名[=初值];說明:1.成員變量修飾符權限控制修飾符有public、protected、private三種,用來控制變量的可見性。2.2成員變量142.類的定義類修飾符static:有static修飾的變量是類變量,否則是對象變量。常量修飾符final:有final修飾的變量是常量,只能賦值一次。2.成員變量的類型可以是八種基本數(shù)據(jù)類型,也可以是引用類型。3.類變量:類變量屬于類,當類載入內存時類變量生效,為該類的所有對象所共享。通過“類名.變量名”來訪問類成員變量。4.對象變量:對象變量屬于對象。因此訪問對象變量時,需要先實例化該類的一個對象,然后通過“對象名.變量名”的方式來訪問。5.我們一般將屬性設置為private,然后提供Getter和Setter方法作為存取數(shù)據(jù)的統(tǒng)一接口。2.2成員變量152.類的定義語句(Statement)太多或部分語句需要反復調用時,我們就需要將這些語句定義成方法(Method)了。方法是能完成一定數(shù)據(jù)處理功能、可以被反復調用的語句的集合。方法要先定義后使用。方法不能嵌套定義,但可以遞歸調用。在Java語言中方法必須在類中定義。在邏輯上方法要么屬于類,要么屬于對象。2.3成員方法的定義162.類的定義方法的語法格式如下:[方法修飾符]<返回類型>方法名(形式參數(shù)列表)[throws異常列表]{......[return返回值;]}2.3成員方法的定義172.類的定義說明:1.方法修飾符說明訪問權限控制修飾符public、protected、private:決定方法的可見性。靜態(tài)修飾符static:有static修飾的方法是類方法,否則是對象方法。最終方法修飾符final:有final修飾的方法是最終方法,最終方法不能被覆蓋。抽象修飾符abstract:有abstract修飾的方法是抽象方法,抽象方法只有方法的定義,沒有方法的實現(xiàn)(方法體)。2.3成員方法的定義182.類的定義2.返回值類型:可以是八種基本數(shù)據(jù)類型和引用類型,在方法體中必須用return語句返回數(shù)據(jù),否則會出現(xiàn)編譯錯誤。如果沒有返回值,請用void代替。3.return語句:用于返回數(shù)據(jù)和終止方法的執(zhí)行。4.形式參數(shù)列表:方法調用時的實參必須和形參一一對應,類型相容。

2.3成員方法的定義192.類的定義我們可以調用自己編寫的方法,也可以調用JDK類庫的方法和第三方提供的方法。在JDK文檔中詳細給出了每個方法的定義、形式參數(shù)、功能等說明。類方法的調用:[包路徑.][類名.]方法名([實參表]);注意:當用import語句引入其它包中的類后,包路徑可以省略;當前類可以省略。對象方法的調用:先實例化一個對象,然后通過“對象名.方法名([實參表]);”的廣東來調用。注意:當前對象可以省略。

實參數(shù)的個數(shù)、順序、類型要和形式參數(shù)一一對應,類型相容。2.4成員方法的調用202.類的定義自然數(shù)n?。╪>1)階乘的定義有兩種:傳統(tǒng)定義:n!=1×2×3×…×n(n≥1)遞歸定義:n!=n×(n-1)!,1!=1(n≥1)有些問題用遞歸思想來解決簡單、直接、有效,用計算機編程實現(xiàn)也十分方便,易于理解,缺點是是內存消耗大、效率較低。2.5成員方法的遞歸調用212.類的定義【示例程序3-3】計算n的階乘(Factorial.java)功能描述:本程序演示了階乘的兩種實現(xiàn)方法:用循環(huán)結構求n!的類方法;用遞歸調用求n!的對象方法,同時演示了類方法和對象如何調用。2.5成員方法的遞歸調用222.類的定義Java語言中3個訪問權限修飾符,四種可見范圍:private修飾的成員變量或方法的可見范圍為當前類。子類只能繼承父類中所有非private的成員。沒有權限修飾符修飾的成員變量或方法的可見范圍為當前包。protected修飾的成員變量或方法的可見范圍是當前包及該類的子類,即可以被同一個包、該類的子類(可以不同包)的方法訪問。public修飾的成員變量或方法可以被所有包中所有類中的方法訪問。2.6訪問權限控制符231面向對象2類的定義3對象實例化與銷毀4定義包和引入類學習提綱5讓我們一起來編程243.對象實例化與銷毀根據(jù)類創(chuàng)建對象的過程又被稱為對象的實例化,一般是通過調用構造方法的方式來完成。構造方法(Constructor)是Java類中一種特殊方法,用于實例化類的一個對象。構造方法主要功能:1.為對象在堆內存中分配內存空間。2.成員變量初始化:數(shù)值類型變量(byte、short、int、long、float、double)初始化為0,boolean類型變量初始化為false,char類型變量初始化為’\0’

,引用類型變量初始化為null。3.1構造方法的定義253.對象實例化與銷毀定義構造方法的語法格式如下:構造方法修飾符類名([形式參數(shù)列表]){ super();//不管是否顯性添加,編譯器自動添加

…………}說明:構造方法名稱必須和所在類的名稱完全相同。構造方法沒有返回值,但是在方法首部也不能使用void聲明。3.1構造方法的定義263.對象實例化與銷毀構造方法的調用與普通方法不同,只能通過new運算符調用。當用戶編程時沒有定義構造方法時,Java編譯器會自動生成一個無參構造方法。但是當用戶一旦顯式定義帶參數(shù)的構造方法時,Java編譯器就不再提供默認的無參構造方法。這時最好把默認的無參構造方法顯式地定義出來,以免JVM自動調用時出現(xiàn)錯誤。3.1構造方法的定義273.對象實例化與銷毀對象實例化一般是通過調用構造方法的方式來進行的。構造方法的調用與一般方法的調用不同,語法格式如下:類名對象變量=new構造方法名([形式參數(shù)列表]);【示例程序3-4】類Circle及其測試類(CircleTest.java)功能描述:本程序演示Circle類描述了一個圓的屬性和相關方法。CircleTest類對Circle類的屬性和方法進行了測試。3.2對象實例化283.對象實例化與銷毀對象使用完后,一定要銷毀,否則就會浪費大量的內存空間。我們只需要將對象標識為垃圾就不用管了。JVM對堆內存的管理采用自動垃圾回收機制。JVM會依據(jù)一定的算法周期性地回收內存中的垃圾。3.2對象的銷毀293.對象實例化與銷毀對象在以下三種情況下成為垃圾。1.對象變量被賦值為null:Circlec=newCircle(10);c=null;2.一次性使用的匿名對象:newCircle(10).getArea();3.超出對象變量生命期:for(inti<=0;i<=1000;i++){Personp=newPerson();}3.2對象的銷毀301面向對象2類的定義3對象實例化與銷毀4定義包和引入類學習提綱5讓我們一起來編程314.引入類與定義包為了便于管理數(shù)目眾多的類和接口,Java引入包(Package)的概念,以解決類和接口命名沖突、引用不便、安全性等問題。和文件夾一樣,包中可以定義類、接口或包,包嵌套層數(shù)沒有限制。我們可以方便地通過“包路徑.類名”的方式來訪問類或接口。package語句指明該源文件中定義的類或接口所在的包。如果缺省package語句,那么該源文件中定義的類和接口將放在系統(tǒng)默認包src中。4.1package語句324.引入類與定義包package語句的語法格式如下:package包名1[.包名2[.包名3……]];說明:package語句必須作為Java源文件的第一條非注釋語句。當包定義的結構和編譯后生成的文件夾結構是一一對應的。

4.1package語句

334.引入類與定義包import語句必須放在所有類或接口定義之前,用來引入指定包的類或接口,相當于C語言的#include語句。Java編譯器默認為所有的Java程序添加:importjava.lang.*;因此我們可以直接使用java.lang包中的類而不必顯式引入。但要想使用Java.lang包以外的其它包中的類的話,必須先引入后使用,否則會出現(xiàn)編譯異常。JVM將在項目的buildpath(classpath)中依次尋找jar包引入指定的類或接口。import語句語法格式如下:import包名1[.包名2[.包名3……]].類名|*;4.2import語句

344.引入類與定義包現(xiàn)將本課程涉及到API常見的包介紹如下:1.java.lang包中存放著Java語言的基礎類庫,主要類和接口如下:八種基本數(shù)據(jù)類型的包裝類:Byte、Double、Float、Integer、Long、Short、Character、Boolean。數(shù)學函數(shù)類:Math。字符串處理類:String、StringBuffer、StringBuilder。系統(tǒng)類和對象類:System、Object。線程類:Thread。4.3JDKAPI常見包介紹354.引入類與定義包2.java.util包下存放了實用工具類和接口、集合框架類或接口,主要類和接口如下:日期類:Date、Calender。集合類框架:Collection、List、Set等。鍵值對集合:Map。實用工具類:Collections、Arrays。3.java.io包中存放了標準輸入、輸出類外,還有緩存流、過濾流、管道流和字符串類等,此外還提供了一些與其他外部設備交換信息的類。4.包含有訪問網上資源的URL類,用于通信的Sockt類和網絡協(xié)議子類庫等。4.3JDKAPI常見包介紹364.引入類與定義包5.java.awt和javax.swingjava.awt和javax.swing包提供了創(chuàng)建圖形用戶界面的全部工具,包括圖形組件類,如窗口、對話框、按鈕、復選框、列表、菜單、滾動條和文本區(qū)等類;用于管理組件排列的布局管理器Layout類;顏色Color類、字體Font類;Java事件處理類等。4.3JDKAPI常見包介紹371面向對象2類的定義3對象實例化與銷毀4定義包和引入類學習提綱5讓我們一起來編程385.讓我們一起來編程【編程作業(yè)】三角形類的編寫和測試(Triangle.jav

溫馨提示

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

評論

0/150

提交評論