第三講 Java中的對象及其相關(guān)語義_第1頁
第三講 Java中的對象及其相關(guān)語義_第2頁
第三講 Java中的對象及其相關(guān)語義_第3頁
第三講 Java中的對象及其相關(guān)語義_第4頁
第三講 Java中的對象及其相關(guān)語義_第5頁
已閱讀5頁,還剩46頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第三講Java中的對象及其相關(guān)語義1Java程序結(jié)構(gòu)Package 包名稱/本程序所在的包;Import packagel .package2(classname 或*);/相當于C中的include。訪問屬性 class 類名 訪問屬性 數(shù)據(jù)類型 成員變量; 訪問屬性 返回類型 方法名(參數(shù)列表) 方法定義; public 類名(參數(shù)列表) 初始化定義; public static main(String args) main定義; ;2什么是包?包是多個類/資源的集合,并以文件的形式存儲包是大型系統(tǒng)代碼共享/資源共享所采用的一種有效形式包文件對類的管理在邏輯結(jié)構(gòu)上呈樹型分級結(jié)構(gòu)定義語法:p

2、ackage 包名;一個java工程可以定義多個包;每個java文件可同時使用多個包中的資源使用語法:import 包名;3類的定義修飾符 class 類名 extends 父類名 implements 接口名列表類體定義;類的修飾符有private、public、abstract和final,一個類可以有多個修飾符號,但不能重復abstract和final不能同時作為一個類的修飾符。private(私有)修飾的類只能被同一包名中的類訪問,這是Java默認方式。public(公共)修飾的類能被所有的類訪問。abstract(抽象)修飾的類不能被實例化,它包含有未實現(xiàn)的方法。final(最終)修

3、飾的類不能被繼承,即不能有子類類的命名原則4類的變量成員語法:修飾符 成員變量類型 成員變量名列表;修飾符:缺省訪問修飾符、public、protected、private、final 和static 缺省訪問修飾符:可以被同一包(package)中的任何類訪問。 public:可以被項目文件中的任何方法訪問。 protected:可以被有繼承關(guān)系的類自由訪問,即子類可以訪問它。 private:只能在同一個類中使用。 static:如圖書館中的圖書,可以被任何讀者共享。 final:最終成員變量。一開始創(chuàng)建該變量時為其設定了一個值,在以后程序的運行過程當中,變量的值將一直保持這個值不變。最終

4、變量又稱為常量。5類的方法成員語法:方法修飾符 返回值類型 方法名 (形參列表) throws 異常列表public 修飾的方法可以由其他類訪問;protected 修飾的方法只能由繼承關(guān)系的類訪問;private 修飾的方法只能由說明該方法的類訪問;static 修飾的方法為靜態(tài)方法,又叫類方法,無static修飾的方法為對象方法,類方法是該類的所有對象共享的方法;abstract 修飾的方法為抽象方法,無方法體;final 修飾的方法為最終方法,不能由子類改變;synchronized 修飾的方法執(zhí)行之前給方法設置同步機制,實現(xiàn)線程同步;native 修飾的方法為本地方法,即方法實現(xiàn)與本機

5、系統(tǒng)有關(guān)。throws 異常列表規(guī)定了在方法執(zhí)行中可能導致的異常6對象初始化語法: public 類名(參數(shù)列表) 初始化定義; 初始化方法不能有返回值一個類可以定義多個初始化方法,但參數(shù)要有所區(qū)別初始化方法在用類創(chuàng)建對象時被系統(tǒng)調(diào)用,執(zhí)行參數(shù)匹配決定具體調(diào)用那一個7Main方法語法: public static main(String args) main定義; 一個java程序/包只能有一個main方法是系統(tǒng)開始程序執(zhí)行的唯一入口8與類有關(guān)的幾個概念抽象抽象:抽象(Abstraction)是具體事物一般化的過程,即對具有特定屬性的對象進行概括,從中歸納出這一類對象的共性,并從通用性的角度描

6、述共有的屬性和行為特征。抽象包括兩方面的內(nèi)容:數(shù)據(jù)抽象/方法抽象9與類有關(guān)的幾個概念封裝封裝(Encapsulation):是指利用一系列語法/語義對類的成員進行規(guī)范分類定義及描述的過程。封裝的目的是根據(jù)數(shù)據(jù)及方法成員的實際性質(zhì)約束其在系統(tǒng)中的使用及被使用屬性。封裝是一種信息隱藏技術(shù),使用者只能看到對象封裝界面上的東西。封裝的目的在于將對象使用者和對象的設計者分開,使用者不必知道行為實現(xiàn)的細節(jié),只要能用設計者提供的消息來訪問對象即可。10與類有關(guān)的幾個概念繼承繼承(Inheritance):用于描述類家族成員之間的遺傳層次關(guān)系。被繼承的類稱為父類或超類,繼承了父類或超類數(shù)據(jù)和方法的類稱為子類。

7、繼承與派生類之間實現(xiàn)類對象成員的選擇性共享11類的繼承語義及其實現(xiàn)語法:修飾符 class 類1 extends 類2類體定義;類1:子類、派生類;類2:父類、超類、繼承類java不允許多重繼承超類成員對子類成員的訪問屬性子類對于超類成員的訪問屬性由超類成員的訪問屬性決定;若超類成員具有public、protected屬性,則在子類中相當于共有屬性;若超類成員具有private屬性,則在子類中不可以直接訪問,只能通過具有public或protected屬性的方法間接訪問;12例1:類定義public class Student public final static int scoreNum=

8、5; private String stdName ; protected int scores; public Student()stdName=“”; public Student(String name) stdName = name; scores = new intscoreNum; public String getName()return stdName; public void setName(String name)stdName = name; public int getScore(int SN)return scoresSN;13例1:類定義續(xù) Public void

9、setScore(int sn,int score) scoressn = score; Public int getAverage() int total = 0; for (int i=0;iscoreNum;i+) total += scoresi; return (int)(total/scoreNum); 14例1:派生類定義Public class Graduate extends Student public boolean canGraduate() boolean can = true; for (int i=0;iscoreNum;i+) if (scoresi 60) c

10、an = false; break; return can; 15例1:派生類定義續(xù)public boolean canGraduate(Student std) boolean can = true; for (int i=0;iStd.scoreNum;i+) if (Std.scoresi 60) can = false; break; return can; 16例1:應用示例Public class Demo public static void main(String args) Graduate g1 = new Graduate(); g1.setScore(“s1”); g1

11、.setScore(0,88); g1.setScore(1,99); g1.setScore(2,66); g1.setScore(3,77); if (g1. canGraduate() System.out.println(“S1 can graduate”); else System.out.println(“S1 can not graduate”); 17例1:應用示例續(xù) Student s2 = new Student(“s2”); s2.setScore(“s2”); s2.setScore(0,85); s2.setScore(1,95); s2.setScore(2,65)

12、; s2.setScore(3,75); if (g1. canGraduate(s2) System.out.println(“S2 can graduate”); else System.out.println(“S2 can not graduate”); 18與類有關(guān)的幾個概念多態(tài)多態(tài)(Polymorphism):所謂多態(tài),是指在一個類的繼承派生體系中,雖然類成員的名字相同 ,但具體含義或?qū)崿F(xiàn)方法不同的封裝方法。或者說相同的符號在不同的環(huán)境下代表的意義不同;多態(tài)的實現(xiàn):子類對父類方法的覆蓋(override)實現(xiàn)多態(tài);通過在同一個類中方法的重載overload來實現(xiàn)運算符重載19多態(tài)的

13、實現(xiàn)示例1Public class Add private int a,b; public Add(int a,int b)this.a = a; this.b = b; public void set(int a,int b) this.a = a; this.b = b; System.out.println(“integer set”); public void getResult() System.out.println(“Super add”); System.out.println(a+b); 20多態(tài)的實現(xiàn)示例1續(xù)Public class FloatAdd extend Add

14、private float a,b; public FloatAdd(int a,int b,float f1,float f2) /super.Add(a,b); super.a = a; super.b = b; this.a = f1; this.b = f2; public void set(float a,float b) this.a = a; this.b = b; System.out.println(“float set1”); public void set(int a,int b) super.set(a,b); system.oyt.println(“super set

15、2”); public void getResult()System.out.println( a+b);21多態(tài)的實現(xiàn)示例1續(xù)Public class Demo public static void main(String args) Add intAdd = new Add(); intAdd.set(1,1);/ integer set intAdd.getResult();/ Super add 2 FloatAdd fAdd = new FloatAdd(2,3,4,5); fAdd.getResult();/9 fAdd.set(4.0,5.0);/ float set1 fAdd

16、.set(3,4);/ super set2 22多態(tài)的實現(xiàn)示例2Public class First public void firstOut() secondOut(); public void secondOut() System.out.println(“first”);Public class Sencond extends First public void secondOut() Syste.out.println(“second”);23多態(tài)的實現(xiàn)示例2續(xù)Second s = new Second(); First f = s;s.firstOut();24抽象類如果類的成員方

17、法被abstract修飾符修飾,則該類為抽象類。抽象方法不能給出方法體的定義;抽象類不能實例化定義對象;抽象類可以作為基類用于派生新的子類,但在子類中必須給出父類中抽象方法的實現(xiàn)25接口接口是通過抽象的方法描述不同對象之間類似功能的一種方法,其表述的是分析級的內(nèi)容,而不是實現(xiàn)級的內(nèi)容;相當于純抽象類;接口是一種對象之間所遵循的抽象標準;Java不支持多重繼承,但可以通過接口實現(xiàn)偽多重集成;接口的數(shù)據(jù)成員只能是公有的靜態(tài)的;修飾符僅限于public/static/final;必須用定義時用常量初始化;接口的成員方法只能是公有、抽象的,修飾符僅限于public/abstract,不能定義方法體。2

18、6接口語義語法 public interface 接口名接口體;定義示例Public interface Switcher boolean ON = true; boolean OFF = false; boolean isPowerOn(); boolean isPowerOff();27接口應用示例1Public interface Instrument void play(); void adjust();Public class Wind implements Instrument public void play() System.out.println(“play wind”);

19、public void adjust() System.out.println(“adjust wind”);28接口應用示例1續(xù)Public class Percussion implements Intrument public void play() System.out.println(“play percussion”); public void adjust() System.out.println(“adjust percussion”);29接口應用示例1續(xù)Public class Music Wind w = new Wind(); Percussion p = new Pe

20、rcussion(); w.adjust(); w.play(); w.adjust(); w.play();30接口應用示例2Public interface Flyvoid canFly();Public interface Flightvoid canFlight();Public interface Eatvoid canEat();31接口應用示例2續(xù)Public class Person private boolean sex; private String name; private int age; publiv void work() System.out.println(“

21、everyone must work”);32接口應用示例2續(xù)Public class Soldier extends Person implement Eat,Flight public void canEat() System.out.println(“Soldier must eat”); public void canFlight() System.out.println(“Soldier can flight”); public void work() canEat(); canFlight(); 33接口應用示例2續(xù)Public class SuperMan implement F

22、ly public void canFly() System.out.println(“Superman can fly”); public void work() super.work(); canFly(); 34接口應用示例2續(xù)Public class Demo public static void main(String args) Person p = new Person(); Soldier s = new Soldier(); SuperMan sp = new Super Man(); p.work(); s.work(); sp.work(); 35異常處理Java中的程序

23、異常泛指程序運行進入非正常狀態(tài),如數(shù)組溢出、除法溢出、指針溢出等;Java提供了異常捕獲機制,提高程序運行的穩(wěn)定性,其基本語法如下:try可能出現(xiàn)異常的代碼片斷;catch(Exception e)異常處理語句;catch(Exception e)異常處理語句;.finally最終處理語句;36異常類ExceptionClassNotFoundExceptionRunTimeException.NullPointerExceptionClassCastException.37定義自己的異常類Class MyException extends Exception public MyExcepti

24、on() public MyException(String msg) super(msg); 其它成員;38 異常處理應用示例Public class Test public void t() throws MyException System.out.println(“begin testing”); throw new MyException(); public static void main(String srgs) try f(); catch(MyException e) e.printStackTrace(); 39Java小程序Java小程序JApplet存在于Import

25、javax.swing.*主要成員函數(shù)如下:init(),第一次打開含有小程序的Web頁面時,JVM將首先調(diào)用init(),而且在整個Applet生命周期中只調(diào)用一次,所以可以使用init()完成應用系統(tǒng)的初始化;注意:一般用init完成數(shù)據(jù)初始化,而創(chuàng)建界面、線程等不可在此函數(shù)中實現(xiàn),此時JVM還沒有為Applet提供諸多資源;start(),JVM在調(diào)用init()后,調(diào)用start(),用戶可以在start中完成線程創(chuàng)建、界面初始化等操作。Start可以被JVM多次調(diào)用,尤其是用戶在多個小程序間切換時40stop(),每當用戶離開小程序所在的web頁面時,stop就會被調(diào)用一次。用戶可以

26、在stop中實現(xiàn)系統(tǒng)占用資源的臨時性清理,暫時停止對系統(tǒng)資源的占用,以提高系統(tǒng)資源的使用效率;destroy(),用戶關(guān)閉小程序所在的web頁面時調(diào)用,只調(diào)用一次,用戶可以在destroy中完成占用資源的主動釋放,完成系統(tǒng)的清理工作;paint(),用于重新繪制小程序界面,在以下幾種情況下被JVM調(diào)用:小程序剛被啟動時;小程序所在瀏覽器窗口發(fā)生改變時;顯式調(diào)用repaint()等方法,致使小程序窗口區(qū)域無效;41小程序的應用語法:public class 類名 extends JApplet類體定義例Import javax.swing.*;Import java.awt.*;Public H

27、ello class extends Japplet public void paint(Graphics g) g.drawString(“Hello world”,10,10); 42嵌入小程序的HTML代碼Hello World!43Java Serverlet服務端小程序Java Serverlet放置在Web或應用服務器上,其主要作用用于擴展服務端的服務功能Serverlet通過請求/應答方式實現(xiàn)客戶端與服務端的通信模式44Serverlet的主要功能創(chuàng)建并返回一個包含基于客戶請求性質(zhì)的動態(tài)內(nèi)容的完整的 HTML頁面。 創(chuàng)建可嵌入到現(xiàn)有 HTML 頁面中的一部分 HTML 頁面(HT

28、ML 片段)。 與其它服務器資源(包括數(shù)據(jù)庫和基于 Java 的應用程序)進行通信。 用多個客戶機處理連接,接收多個客戶機的輸入,并將結(jié)果廣播到多個客戶機上。例如,Servlet 可以是多參與者的游戲服務器。 當允許在單連接方式下傳送數(shù)據(jù)的情況下,在瀏覽器上打開服務器至applet的新連接,并將該連接保持在打開狀態(tài)。當允許客戶機和服務器簡單、高效地執(zhí)行會話的情況下,applet也可以啟動客戶瀏覽器和服務器之間的連接。可以通過定制協(xié)議或標準(如 IIOP)進行通信。對特殊的處理采用 MIME 類型過濾數(shù)據(jù),例如圖像轉(zhuǎn)換和服務器端包括(SSI)。 將定制的處理提供給所有服務器的標準例行程序。例如,

29、Servlet 可以修改如何認證用戶。45Serverlet的生命周期Servlet 的生命周期始于將它裝入 Web 服務器的內(nèi)存時,并在終止或重新裝入 Servlet 時結(jié)束。初始化。在下列時刻裝入 Servlet: 如果已配置自動裝入選項,則在啟動服務器時自動裝入 在服務器啟動后,客戶機首次向 Servlet 發(fā)出請求時重新裝入 Servlet 時裝入 Servlet 后,服務器創(chuàng)建一個 Servlet 實例并且調(diào)用 Servlet 的 init() 方法。(2) 請求處理。對于到達服務器的客戶機請求,服務器創(chuàng)建特定于請求的一個“請求”對象和一個“響應”對象。服務器調(diào)用 Servlet 的

30、 service() 方法,該方法用于傳遞“請求”和“響應”對象。service() 方法從“請求”對象獲得請求信息、處理該請求并用“響應”對象的方法以將響應傳回客戶機。service() 方法可以調(diào)用其它方法來處理請求,例如 doGet()、doPost() 或其它的方法。 (3) 終止。當服務器不再需要 Servlet, 或重新裝入 Servlet 的新實例時,服務器會調(diào)用 Serverlet 的 destroy() 方法。 46Severlet方法init() 方法。在 Servlet 的生命期中,僅執(zhí)行一次 init() 方法。它是在服務器裝入 Servlet 時執(zhí)行的。 可以配置服務

31、器,以在啟動服務器或客戶機首次訪問 Servlet 時裝入 Servlet。 無論有多少客戶機訪問 Servlet,都不會重復執(zhí)行 init() 。service() 方法。是 Servlet 的核心。每當一個客戶請求一個HttpServlet 對象,該對象的service() 方法就要被調(diào)用。當一個客戶通過HTML 表單發(fā)出一個HTTP POST請求時,doPost()方法被調(diào)用。當一個客戶通過HTML 表單發(fā)出一個HTTP GET請求或直接請求一個URL時,doGet()方法被調(diào)用。47destroy() 方法。僅執(zhí)行一次,即在服務器停止且卸裝Servlet 時執(zhí)行該方法。完成清理工作。G

32、etServletConfig()方法返回一個 ServletConfig 對象,該對象用來返回初始化參數(shù)和ServletContext。ServletContext 接口提供有關(guān)servlet 的環(huán)境信息。GetServletInfo()方法是一個可選的方法,它提供有關(guān)servlet 的信息,如作者、版本、版權(quán)。48Serverlet應用擴展 HttpServlet 抽象類。 重載適當?shù)姆椒āH绺采w(或稱為重寫)doGet() 或doPost()方法。如果有 HTTP 請求信息的話,獲取該信息。用 HttpServletRequest 對象來檢索 HTML 表格所提交的數(shù)據(jù)或 URL 上的查詢字符串?!罢埱蟆睂ο蠛刑囟ǖ姆椒ㄒ詸z索客戶機提供的信息,有3個可用的方法:getParameterNames(),getParameter(),getParameterValues()。生成 HTTP 響應。HttpServletResponse 對象生成響應,并將它返回到發(fā)出請求的客戶機上。49import java.io.*;import java.util.*;import javax.servlet.*;import javax.servlet.http.*; public class Servlet

溫馨提示

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

最新文檔

評論

0/150

提交評論