版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第1頁頁2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第2頁頁1.全面掌握面向?qū)ο蟮娜嬲莆彰嫦驅(qū)ο蟮幕咎卣鳎换咎卣鳎?本章學(xué)習(xí)要點(diǎn)本章學(xué)習(xí)要點(diǎn)2.掌握掌握如何定義如何定義一個(gè)類以及一個(gè)類以及如何生成如何生成對象;對象;3.深入掌握深入掌握方法的定義方法的定義及技巧;及技巧;4.深入掌握類的深入掌握類的訪問權(quán)限訪問權(quán)限與與封裝機(jī)制;封裝機(jī)制;5.深入掌握深入掌握包的定義包的定義與與包的使用包的使用方法。方法。2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第3頁頁理解面向?qū)ο蟮幕咎卣骼斫饷嫦驅(qū)ο蟮?/p>
2、基本特征教教學(xué)學(xué)重重點(diǎn)點(diǎn)理解如何定義一個(gè)類理解如何定義一個(gè)類熟悉對象的生成方法熟悉對象的生成方法掌握類的各種訪問權(quán)限掌握類的各種訪問權(quán)限理解包的定義理解包的定義2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第4頁頁熟悉類的定義過程熟悉類的定義過程教教學(xué)學(xué)難難點(diǎn)點(diǎn)熟悉對象的生成過程熟悉對象的生成過程熟悉類的封裝機(jī)制熟悉類的封裝機(jī)制熟悉包的使用方法熟悉包的使用方法2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第5頁頁Java是一種純粹的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,一個(gè)是一種純粹的面向?qū)ο蟮某绦蛟O(shè)計(jì)語言,一個(gè)Java程序乃至程序乃至Java程序內(nèi)的程序內(nèi)的基本單元都是對象
3、基本單元都是對象。因此,。因此,用用Java進(jìn)行程序設(shè)計(jì)必須將自己的思想轉(zhuǎn)入到一個(gè)面向進(jìn)行程序設(shè)計(jì)必須將自己的思想轉(zhuǎn)入到一個(gè)面向?qū)ο蟮氖澜?,以對象的世界,以對象世界對象世界的思維方式來思考問題。的思維方式來思考問題。4.1 Java編程思想編程思想編寫一個(gè)編寫一個(gè)Java程序就是在程序就是在定義類定義類和和創(chuàng)建對象創(chuàng)建對象,也就,也就是說定義類和建立對象是是說定義類和建立對象是Java編程的主要任務(wù)。編程的主要任務(wù)。2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第6頁頁4.2 類類 的的 建建 立立 Java的類的類用戶自定義用戶自定義類類系統(tǒng)定義的系統(tǒng)定義的類類Java的類庫
4、就是系統(tǒng)定義的類,它是系統(tǒng)提供的已的類庫就是系統(tǒng)定義的類,它是系統(tǒng)提供的已實(shí)現(xiàn)的實(shí)現(xiàn)的標(biāo)準(zhǔn)類的集合標(biāo)準(zhǔn)類的集合,提供了,提供了Java程序與運(yùn)行它的系統(tǒng)程序與運(yùn)行它的系統(tǒng)軟件(軟件(Java虛擬機(jī))之間的虛擬機(jī))之間的接口接口。2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第7頁頁 學(xué)習(xí)學(xué)習(xí)Java語言在某種程度上就是在語言在某種程度上就是在:1.學(xué)習(xí)如何定義所需要的類,即學(xué)習(xí)學(xué)習(xí)如何定義所需要的類,即學(xué)習(xí)Java程序的程序的書寫規(guī)書寫規(guī)范范,熟悉和掌握,熟悉和掌握語法規(guī)則語法規(guī)則;2.熟悉熟悉Java平臺(tái)定義了哪些平臺(tái)定義了哪些經(jīng)常要用到經(jīng)常要用到、而且、而且滿足我們滿足我們
5、需要需要的類。的類。4.3 Java語言的學(xué)習(xí)語言的學(xué)習(xí)2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第8頁頁4.4 類的概念與定義類的概念與定義 用面向?qū)ο蟮挠^點(diǎn)來看,世界上的用面向?qū)ο蟮挠^點(diǎn)來看,世界上的一切事物都是對象一切事物都是對象。而物以而物以“類類”聚,所以這些對象可以劃分成各種聚,所以這些對象可以劃分成各種“類類”。類類行為行為狀態(tài)狀態(tài)按照面向?qū)ο蟮挠^點(diǎn)按照面向?qū)ο蟮挠^點(diǎn)類的定義類的定義HASISDOES類聲明類聲明成員變量成員變量成員方法成員方法2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第9頁頁4.4.1 IS說明該類說明該類“是是”什么樣的
6、一個(gè)類,即說明什么樣的一個(gè)類,即說明類的名類的名字及其性質(zhì)字及其性質(zhì),如一個(gè)類的父類、修飾符等,這一部分,如一個(gè)類的父類、修飾符等,這一部分稱為稱為類聲明類聲明。2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第10頁頁4.4.2 HAS說明這個(gè)類說明這個(gè)類“有有”些什么些什么特征及屬性特征及屬性,這些特,這些特征和屬性用域變量來表示,這一部分統(tǒng)稱為征和屬性用域變量來表示,這一部分統(tǒng)稱為成員成員變量變量。2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第11頁頁4.4.3 DOES 說明這個(gè)類可以說明這個(gè)類可以“做做”什么,即這個(gè)類有哪些什么,即這個(gè)類有哪些行為行為
7、,這些行為用,這些行為用實(shí)例方法實(shí)例方法和和類方法類方法描述,這些方描述,這些方法統(tǒng)稱為法統(tǒng)稱為成員方法成員方法。2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第12頁頁4.4.4 類各部分的關(guān)系類各部分的關(guān)系ISHAS類的狀態(tài)類的狀態(tài)DOES類的行為類的行為由由成員方法(成員方法(Member Method)來實(shí)現(xiàn)來實(shí)現(xiàn)2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第13頁頁4.4.5 類的基本形式類的基本形式在在Java中,中,class是聲明一個(gè)類的關(guān)鍵字,類名是要是聲明一個(gè)類的關(guān)鍵字,類名是要聲明的類的名字,它必須是一個(gè)聲明的類的名字,它必須是一個(gè)合法的
8、合法的Java標(biāo)識(shí)符標(biāo)識(shí)符,習(xí),習(xí)慣上用慣上用大寫字母開頭大寫字母開頭。class 類名類名 / IS 成員變量成員變量;/ HAS 成員方法成員方法;/ DOES2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第14頁頁類聲明類聲明類體類體變量定義變量定義構(gòu)造器構(gòu)造器方法的方法的定義定義垃圾回收垃圾回收2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第15頁頁4.4.6 類聲明類聲明 類聲明定義了類聲明定義了類的名字類的名字以及其他的以及其他的屬性屬性,說明該類,說明該類是(是(IS)什么樣的一個(gè)類。)什么樣的一個(gè)類。類的修飾符類的修飾符類聲明類聲明類的父類類的父
9、類類 所 實(shí) 現(xiàn)類 所 實(shí) 現(xiàn)的接口的接口2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第16頁頁4.4.7 類的聲明方法類的聲明方法類修飾符類修飾符class類名稱類名稱extends父類名稱父類名稱implements接口名稱列表接口名稱列表 變量變量定義及初始化;定義及初始化; 方法方法定義及方法體;定義及方法體; 類體,定義了該類中所有的變量類體,定義了該類中所有的變量(成員變量)和該類所支持的方(成員變量)和該類所支持的方法(成員方法)。法(成員方法)。2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第17頁頁4.4.7.1 類修飾符類修飾符類修飾符類修
10、飾符publicabstractfinal2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第18頁頁 4.4.7.2 public 修飾符修飾符默認(rèn)時(shí),該類只能被默認(rèn)時(shí),該類只能被同一個(gè)程序包同一個(gè)程序包中其他的類中其他的類使用。使用。 public:該關(guān)鍵字聲明的類可以在其他的該關(guān)鍵字聲明的類可以在其他的任何任何類類中使用。中使用。2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第19頁頁 abstract:抽象類,沒有具體對象的概念類,沒有具抽象類,沒有具體對象的概念類,沒有具體實(shí)現(xiàn)功能,只用于體實(shí)現(xiàn)功能,只用于擴(kuò)展子類擴(kuò)展子類。4.4.7.3 abstract
11、 修飾符修飾符鳥鳥鴿子鴿子燕子燕子抽象類抽象類具體類具體類2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第20頁頁 final:最終類,表示該類已經(jīng)非常具體,最終類,表示該類已經(jīng)非常具體,沒有沒有子類子類可擴(kuò)展??蓴U(kuò)展。4.4.7.4 final 修飾符修飾符2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第21頁頁1. 在在Java中,除中,除Object之外,每個(gè)類都有一個(gè)父類。之外,每個(gè)類都有一個(gè)父類。4.4.7.5 說明一個(gè)類的父類說明一個(gè)類的父類 2. Object是是Java語言中語言中惟一沒有父類惟一沒有父類的類,如果某個(gè)類沒有聲明的類,如果某個(gè)類沒
12、有聲明父類,父類,Java就認(rèn)為它是就認(rèn)為它是Object的直接子類。因此,所有其他類的直接子類。因此,所有其他類都是都是Object的的直接子類或間接子類直接子類或間接子類。3. 說明一個(gè)類的父類的形式為:說明一個(gè)類的父類的形式為:class 類名類名 extends 父類名父類名 / 類體類體 4. 其中其中extends子句認(rèn)為是子句認(rèn)為是直接繼承直接繼承其后的父類,因此在類的分級其后的父類,因此在類的分級結(jié)構(gòu)中插入這個(gè)類。結(jié)構(gòu)中插入這個(gè)類。 2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第22頁頁1. 接口定義了接口定義了行為的協(xié)議行為的協(xié)議,這些行為可以在處于各個(gè)層次
13、的任,這些行為可以在處于各個(gè)層次的任何類中被實(shí)現(xiàn)。何類中被實(shí)現(xiàn)。4.4.7.6 說明一個(gè)類所實(shí)現(xiàn)的接口說明一個(gè)類所實(shí)現(xiàn)的接口2. 一 個(gè) 類 要 實(shí) 現(xiàn) 的一 個(gè) 類 要 實(shí) 現(xiàn) 的 一 個(gè) 或 多 個(gè)一 個(gè) 或 多 個(gè) 接 口 , 可 以 使 用 關(guān) 鍵 字接 口 , 可 以 使 用 關(guān) 鍵 字implements,并且在其后面給出由該類實(shí)現(xiàn)的接口的名字表,并且在其后面給出由該類實(shí)現(xiàn)的接口的名字表,接口的名字表是以接口的名字表是以逗號分隔逗號分隔的多個(gè)接口。的多個(gè)接口。3. 接口的形式為:接口的形式為: implements Interfaces1,Interfaces2, ,Interfa
14、cesk; 4. 接口可以聲明接口可以聲明多個(gè)方法和變量多個(gè)方法和變量,但是沒有這些方法的具體實(shí),但是沒有這些方法的具體實(shí)現(xiàn)?,F(xiàn)。2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第23頁頁變量修飾符變量修飾符 變量數(shù)據(jù)類型變量數(shù)據(jù)類型 變量名變量名1,變量名變量名2=變量初值變量初值;2. 變量修飾符:變量修飾符:4.5 成員變量的聲明成員變量的聲明1. 類成員變量的定義及修飾符:類成員變量的定義及修飾符:public |protected |private |package static final public 、protected 、private :為為可訪問性可訪問性修
15、飾符修飾符 static:說明該成員變量是類變量說明該成員變量是類變量 final: 說明為常量使用說明為常量使用3. 成員變量的類型成員變量的類型可以是可以是Java中中任意的任意的數(shù)據(jù)類型,包括簡單類型,數(shù)據(jù)類型,包括簡單類型,類,接口,數(shù)組。類,接口,數(shù)組。4. 在一個(gè)類中的成員變量應(yīng)該是在一個(gè)類中的成員變量應(yīng)該是唯一的唯一的。2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第24頁頁public訪問控制符訪問控制符protectedprivatedefault4.5.1 訪問控制符的分類訪問控制符的分類2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第25頁
16、頁4.5.2 public public: 任何其它類、對象任何其它類、對象只要可以看到這個(gè)類的話,那么它就只要可以看到這個(gè)類的話,那么它就可以存取變量的數(shù)據(jù),或使用方法。可以存取變量的數(shù)據(jù),或使用方法。/: co4:Dinner.javaimport co4.dessert.*;public class Dinner public Dinner() System.out.println(Dinner constructor) public static void main(String args) Cookie x = new Cookie(); x.bite(); / Cant acces
17、s 2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第26頁頁/: co4:dessert:Cookie.javapackage co4.dessert;public class Cookie /此處的此處的public不能少不能少 public Cookie() System.out.println(Cookie constructor); /public bite如果聲明為如果聲明為protected則可被子類使用則可被子類使用 protected void bite() System.out.println(bite); 2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)
18、珞珈學(xué)院第第27頁頁4.5.3 protectedprotected:同一類,同一包可以使用。不同包的類要使用,必:同一類,同一包可以使用。不同包的類要使用,必須是該類的子類。須是該類的子類。/: co4:ChocolateChip.javaimport co4.dessert.*;public class ChocolateChip extends Cookie public ChocolateChip() System.out.println( ChocolateChip constructor); public static void main(String args) Chocolat
19、eChip x = new ChocolateChip(); x.bite(); / Cant access bite 2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第28頁頁4.5.4 privateprivate:不允許任何其他類存取和調(diào)用。:不允許任何其他類存取和調(diào)用。/: co4:IceCream.java/ Demonstrates private keyword.class Sundae private int x; public int getX()return x; private Sundae() static Sundae makeASundae() ret
20、urn new Sundae(); public static class IceCream public static void main(String args) Sundae x = new Sundae(); /!不合法不合法 Sundae x = Sundae.makeASundae(); /合法合法 System.out.print(x.getX(); /合法合法 2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第29頁頁4.5.5 defaultdefault: (前邊前邊沒有修飾字沒有修飾字的情況的情況)在在同一包中同一包中出現(xiàn)的出現(xiàn)的類才可以直接使用它的數(shù)據(jù)和方
21、法。類才可以直接使用它的數(shù)據(jù)和方法。/: co4:Cake.javaclass Cake public static void main(String args) Pie x = new Pie(); /類類PiePie也在包也在包c(diǎn)o4co4中中 x.f(); 2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第30頁頁4.5.6 訪問控制符的權(quán)限訪問控制符的權(quán)限對對 公共類公共類 的成員變量和成員方法而言,可通過的成員變量和成員方法而言,可通過施以一定的訪問權(quán)限來限定其成員的應(yīng)用范圍,具體施以一定的訪問權(quán)限來限定其成員的應(yīng)用范圍,具體范圍如下:范圍如下:同一個(gè)類同一個(gè)類中中 同
22、一個(gè)包同一個(gè)包中中 不同包中不同包中的子類的子類 不同包中不同包中的非子類的非子類privatedefaultprotectedpublic2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第31頁頁4.5.7 訪問控制符的使用范圍訪問控制符的使用范圍公共類和非公共類的屬性和方法的訪問控制表及公共類和非公共類的屬性和方法的訪問控制表及圖示見下圖:圖示見下圖:A:所有類所有類B:包中的類包中的類D:本類本類C:所有子類所有子類 類類屬性與方法屬性與方法public 默認(rèn)默認(rèn)publicABprotectedB+CB默認(rèn)默認(rèn)BBprivateDD2022-4-4 21:43武漢大學(xué)珞珈
23、學(xué)院武漢大學(xué)珞珈學(xué)院第第32頁頁4.6 static1. 屬于屬于類的類的變量和方法的關(guān)鍵字變量和方法的關(guān)鍵字static.2. static 在變量或方法之前,表明它們是屬于類的,稱在變量或方法之前,表明它們是屬于類的,稱為為類方法(靜態(tài)方法)類方法(靜態(tài)方法)或或類變量(靜態(tài)變量)類變量(靜態(tài)變量)。3. 若若無無static修飾,則是修飾,則是實(shí)例方法實(shí)例方法和和實(shí)例變量實(shí)例變量。4. 類變量在各實(shí)例間類變量在各實(shí)例間共享共享。class ABCD char data; static int share_data;class Demo ABCD a,b,c,d;2022-4-4 21:4
24、3武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第33頁頁class ABCD char data; static int share_data;class Demo ABCD a,b,c,d;object dchar data4.6.1 static實(shí)例實(shí)例object achar dataobject cchar dataObject bchar datastatic intshare_data2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第34頁頁public class StaticVarpublic static int number 5;public class OtherCl
25、asspublic void method() int x = StaticVar.number; 類變量的生存期不依賴于對象的實(shí)例,其它類可類變量的生存期不依賴于對象的實(shí)例,其它類可以不通過對象實(shí)例訪問它們。甚至可以在它的類的任以不通過對象實(shí)例訪問它們。甚至可以在它的類的任何對象創(chuàng)建之前訪問。何對象創(chuàng)建之前訪問。4.6.2 類變量類變量static2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第35頁頁class AnIntegerNamedX static int x; /使用了關(guān)鍵字使用了關(guān)鍵字static public int x() return x; public
26、void setX(int newX) x = newX; public class Compare_test public static void main(String args) AnIntegerNamedX myX = new AnIntegerNamedX(); AnIntegerNamedX anotherX = new AnIntegerNamedX(); myX.setX(1); anotherX.setX(2); System.out.println(myX.x = + myX.x(); System.out.println(anotherX.x = + anotherX.
27、x();2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第36頁頁1.方法是類的方法是類的動(dòng)態(tài)屬性動(dòng)態(tài)屬性。4.7 方法的聲明與實(shí)現(xiàn)方法的聲明與實(shí)現(xiàn)2.對象的行為是由它的對象的行為是由它的方法方法來實(shí)現(xiàn)的。來實(shí)現(xiàn)的。3.一個(gè)對象可通過一個(gè)對象可通過調(diào)用調(diào)用另一個(gè)對象的方法來訪問該對另一個(gè)對象的方法來訪問該對象。象。4.與類一樣,方法也有兩個(gè)主要部分:與類一樣,方法也有兩個(gè)主要部分:方法首部聲明方法首部聲明和和方法體方法體。5.方法聲明的方法聲明的基本形式基本形式為:為:返回類型返回類型 方法名方法名( ) /方法體方法體2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院
28、第第37頁頁public Object push(Object item) items.addElement(item);return item;訪問等級訪問等級返回類型返回類型方法名方法名參數(shù)表參數(shù)表方法首部聲明方法首部聲明方法體方法體4.7.1 方法的介紹方法的介紹2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第38頁頁方法修飾符方法修飾符 返回類型返回類型 方法名稱方法名稱(參數(shù)參數(shù)1,參數(shù)參數(shù)2,) throws exceptionList statements; /方法體:方法的內(nèi)容方法體:方法的內(nèi)容4.7.2 方法聲明方法聲明1.方法聲明的完整形式:方法聲明的完整形
29、式:2.返回類型返回類型可以是可以是任意的任意的Java數(shù)據(jù)類型,當(dāng)一個(gè)方法數(shù)據(jù)類型,當(dāng)一個(gè)方法不需要返回不需要返回值時(shí),返回類型為值時(shí),返回類型為void。3.參數(shù)的類型參數(shù)的類型可以是可以是簡單簡單數(shù)據(jù)類型,也可以是數(shù)據(jù)類型,也可以是引用引用數(shù)據(jù)類型(數(shù)數(shù)據(jù)類型(數(shù)組、類或接口),參數(shù)傳遞方式是組、類或接口),參數(shù)傳遞方式是值傳遞值傳遞。4.方法體是對方法的實(shí)現(xiàn)。它包括局部變量的聲明以及所有合法方法體是對方法的實(shí)現(xiàn)。它包括局部變量的聲明以及所有合法的的Java指令。局部變量的作用域只在該方法指令。局部變量的作用域只在該方法內(nèi)部內(nèi)部。2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)
30、院第第39頁頁4.7.3 方法修飾符方法修飾符public |protected |private方法修飾符方法修飾符staticfinal |abstractnativesynchronized2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第40頁頁4.7.4 方法的返回類型方法的返回類型1.一個(gè)方法一個(gè)方法必須聲明必須聲明其返回類型,如果無返回值,則必須聲其返回類型,如果無返回值,則必須聲明其返回類型為明其返回類型為void。2.當(dāng)當(dāng)return語句帶有返回值時(shí),它與方法定義的返回類型的語句帶有返回值時(shí),它與方法定義的返回類型的關(guān)系必須符合如下幾種情況之一:關(guān)系必須符合如下
31、幾種情況之一:當(dāng)方法聲明的返回類型是當(dāng)方法聲明的返回類型是基本數(shù)據(jù)類型基本數(shù)據(jù)類型時(shí),返回值的時(shí),返回值的數(shù)據(jù)類型必須與返回類型數(shù)據(jù)類型必須與返回類型一致一致。當(dāng)方法聲明的返回類型是當(dāng)方法聲明的返回類型是一個(gè)類一個(gè)類時(shí),返回對象的數(shù)據(jù)時(shí),返回對象的數(shù)據(jù)類型必須是與方法聲明的返回類類型必須是與方法聲明的返回類相同的類或其子類相同的類或其子類。當(dāng)方法聲明的返回類型是當(dāng)方法聲明的返回類型是一個(gè)接口類型一個(gè)接口類型時(shí),返回的對時(shí),返回的對象所屬的類必須象所屬的類必須實(shí)現(xiàn)這個(gè)接口實(shí)現(xiàn)這個(gè)接口。2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第41頁頁class Length / / 成員變
32、量成員變量 double value = 0; String scale = none; Length(double _value, String _scale) value = _value; scale = _scale; double convertToFeet() if (scale.equals(feet) return value; /true; else return value * 3.2; Length convertToFeet() if (scale.equals(feet) return this; else return new Length(value * 3.2,
33、 feet); 2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第42頁頁 Length convertToMeter() if (scale.equals(meter) return this;else return new Length(value / 3.2, meter); void showLength() System.out.println(value + + scale); public static void main(String args) Length l = new Length(1,feet);l = l.convertToMeter();l.show
34、Length(); 2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第43頁頁4.7.5 方法名方法名1.方法名可以是任何方法名可以是任何合法的合法的Java標(biāo)識(shí)符標(biāo)識(shí)符 。2.方法可以重載方法可以重載Java支持方法名重載,即多個(gè)方法可以支持方法名重載,即多個(gè)方法可以共享一個(gè)名字共享一個(gè)名字。3.重載的方法不一定返回相同的數(shù)據(jù)類型,但參數(shù)必須有所區(qū)重載的方法不一定返回相同的數(shù)據(jù)類型,但參數(shù)必須有所區(qū)別:別: 參數(shù)的類型不同。例如,參數(shù)的類型不同。例如,doubleIt(int x)和和doubleIt(String x)方法的兩個(gè)版本的參數(shù)的類型不一樣。方法的兩個(gè)版本的參數(shù)的類
35、型不一樣。 參數(shù)的順序不同。這里是指一個(gè)方法有多個(gè)不同類型參數(shù)參數(shù)的順序不同。這里是指一個(gè)方法有多個(gè)不同類型參數(shù)的情況,改變參數(shù)的順序也算是一種區(qū)分方法。的情況,改變參數(shù)的順序也算是一種區(qū)分方法。 參數(shù)的個(gè)數(shù)不同。參數(shù)的個(gè)數(shù)不同。2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第44頁頁class OverLoad public static String doubleIt(String data) /返回一個(gè)返回一個(gè)String類型類型System.out.println(data + data); return data+data;public static int doub
36、leIt(int data) /返回一個(gè)返回一個(gè)int類型類型 System.out.println(2*data); return data+data; public static void main(String args) System.out.println(Hello World!+doubleIt(a)+doubleIt(6);2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第45頁頁4.7.6 方法的參數(shù)方法的參數(shù) 一個(gè)參數(shù)是一個(gè)方法的變元,它與類的成員變量毫無關(guān)系,一個(gè)參數(shù)是一個(gè)方法的變元,它與類的成員變量毫無關(guān)系,因此參數(shù)名可以和成員變量名因此參數(shù)名可以和成員變
37、量名相同相同。如果一個(gè)方法的參數(shù)名與成。如果一個(gè)方法的參數(shù)名與成員變量名同名,則在這個(gè)方法中,參數(shù)員變量名同名,則在這個(gè)方法中,參數(shù)隱藏隱藏了這個(gè)成員變量名,了這個(gè)成員變量名,也就是說,在方法中出現(xiàn)的這個(gè)名字指的是參數(shù)名,而不是成員也就是說,在方法中出現(xiàn)的這個(gè)名字指的是參數(shù)名,而不是成員變量名。變量名。 Class Circle int x, y, radius; public Circle(int x, int y, int radius) this.x = x; this.y = y; this.radius = radius; 2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院
38、第第46頁頁4.7.7 方法的參數(shù)傳遞方法的參數(shù)傳遞 Java的參數(shù)傳遞方式是傳遞值,也稱為的參數(shù)傳遞方式是傳遞值,也稱為“值傳遞值傳遞”。ClassNamevoid aMethod(double d, int i, boolean t)public static void main(String args)double x=1.0; int y=2; boolean b=true;aMethod(x, y, b)Variable value x = 1.0 y = 2 b = trueVariable value d = 1.0 i = 2 t = true參數(shù)有兩種類型:基本類型的變量名是
39、變量本身;參數(shù)有兩種類型:基本類型的變量名是變量本身; 引用類型變量的名字是變量的存儲(chǔ)地點(diǎn)。引用類型變量的名字是變量的存儲(chǔ)地點(diǎn)。 2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第47頁頁4.7.8 值傳遞值傳遞 對于這種值傳遞方式要區(qū)分如下兩對于這種值傳遞方式要區(qū)分如下兩種情況:種情況:Main MemoryBasic Type:Reference TypevarNamevaluevarNamedata不能改變基本類不能改變基本類型變量的值型變量的值可以改變引用類可以改變引用類型變量的值型變量的值(1)當(dāng)參數(shù)變元是一個(gè))當(dāng)參數(shù)變元是一個(gè)簡單類型簡單類型時(shí),時(shí),值傳遞意味著這個(gè)方
40、法值傳遞意味著這個(gè)方法不能改變不能改變參數(shù)變參數(shù)變元的值。元的值。(2)當(dāng)參數(shù)變元是一個(gè)引用類型時(shí),)當(dāng)參數(shù)變元是一個(gè)引用類型時(shí),值傳遞意味著這個(gè)方法不能改動(dòng)這個(gè)對值傳遞意味著這個(gè)方法不能改動(dòng)這個(gè)對象的引用,但是方法可以象的引用,但是方法可以調(diào)用調(diào)用該對象的該對象的方法來方法來修改修改該對象中可訪問的變量。該對象中可訪問的變量。2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第48頁頁public class StringTester public static void changeStrings(String s, StringBuffer sb) s += by Defin
41、ition; sb.append( by Definition); sb=null; /并不能改變參數(shù)的引用并不能改變參數(shù)的引用 public static void main(String args) String string = new String(Java); StringBuffer buffer = new StringBuffer(Java); changeStrings(string, buffer); System.out.println(String after method call: + string); System.out.println(StringBuffer
42、 after method call: + buffer); 2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第49頁頁nullnull變量變量變量種類變量種類thisthis變量變量supersuper變量變量局部變量局部變量4.7.9 變量種類變量種類2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第50頁頁4.7.10 null變量變量(1)null變量變量class NullTest public static void main(String args) String n =null;System.out.println(Hello World!+n.to
43、String();null是一個(gè)是一個(gè)“空空”變量變量,用于,用于指代某一個(gè)對象指代某一個(gè)對象,但這個(gè),但這個(gè)對象沒有相應(yīng)的實(shí)例。對象沒有相應(yīng)的實(shí)例。例如:例如: Stack stack = null; 2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第51頁頁4.7.11 其它變量其它變量(2)this變量變量this表示的是當(dāng)前類的當(dāng)前對象表示的是當(dāng)前類的當(dāng)前對象本身本身,更準(zhǔn)確地說,更準(zhǔn)確地說,this代表了當(dāng)前對象的一個(gè)代表了當(dāng)前對象的一個(gè)引用引用。 (3)super變量變量super表示的是當(dāng)前對象的表示的是當(dāng)前對象的直接父類對象的引用直接父類對象的引用。所謂所謂直接父
44、類直接父類是相對于當(dāng)前對象的其他是相對于當(dāng)前對象的其他“祖先祖先”類而言類而言的。的。(4)局部變量)局部變量在方法體中,可以聲明多個(gè)變量,它們在該方法在方法體中,可以聲明多個(gè)變量,它們在該方法內(nèi)部使內(nèi)部使用用。 2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第52頁頁4.7.12 變量的作用域變量的作用域class MyClass . . .member variable declarations. . .public void aMethod(method parameters). . . . .local variable declarations. . .catch(e
45、xception handler parameters). . . . .成員變量的作成員變量的作用域用域方法參數(shù)的作方法參數(shù)的作用域用域局部變量的作局部變量的作用域用域異常處理參數(shù)異常處理參數(shù)的作用域的作用域2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第53頁頁class X static int x; static int x() return x; X(int x) this.x = x; System.out.println(the member x is +this.x); public static void main(String args) int x= 10
46、 ; /必須初始化必須初始化 System.out.println(the inner x= +x); System.out.println(the member x= +x); try x = x/X.x(); catch (Exception x) System.out.println(the Exception x is +x.toString(); X x = new X(1); System.out.println(the object xx is +X.x);2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第54頁頁4.8 類方法類方法1.類方法類方法獨(dú)立于獨(dú)立于該類
47、的任何對象,其他類不用實(shí)例化即可調(diào)用它們。該類的任何對象,其他類不用實(shí)例化即可調(diào)用它們。public class GeneralFunction public static int addUp(int x,int y) return x+y; public class UseGeneral public void method() int a = 9;int b =10;int c = GeneralFunction.addUp(a,b); /通過類名通過類名GeneralFunctionGeneralFunction引用引用addUpaddUp方法方法 2.類方法類方法可以調(diào)用可以調(diào)用其它的
48、類方法。其它的類方法。3.類方法類方法只能訪問只能訪問static變量。變量。4.類方法類方法不能不能以任何形式引用以任何形式引用this 和和super.2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第55頁頁class StaticError String mystring=“hello”; public static void main(String args) System.out.println(mystring); 4.8.1 不正確的引用不正確的引用1.同一個(gè)類中的方法可以訪問同一個(gè)類中的方法可以訪問該類的該類的成員變量;成員變量;不正確的引用不正確的引用編譯時(shí)錯(cuò)
49、誤信息:編譯時(shí)錯(cuò)誤信息: nonstatic variable mystringnonstatic variable mystring cannot be cannot be referenced from a static context referenced from a static context 為什么不正確:只有對象的方法可以訪問對象的變量。為什么不正確:只有對象的方法可以訪問對象的變量。2.一個(gè)類的方法只能訪問一個(gè)類的方法只能訪問自己的自己的局部變量。局部變量。2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第56頁頁4.8.2 解決的辦法解決的辦法11. 將變量改
50、成類變量將變量改成類變量class StaticError static String mystring=“hello”; public static void main(String args) System.out.println(mystring); 2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第57頁頁4.8.2 解決的辦法解決的辦法22. 先創(chuàng)建一個(gè)類的實(shí)例,再通過該對象訪問該變量。先創(chuàng)建一個(gè)類的實(shí)例,再通過該對象訪問該變量。class NoStaticError String mystring=“hello”; public static void main(St
51、ring args) NoStaticError noError; noError = new NoStaticError(); System.out.println(noError.mystring); 2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第58頁頁class Car int car_number; void set_number(int car_num) car_number=car_num; void show_number() System.out.println (My car No. is : +car_number); Class CarDemo pub
52、lic static void main(String args) Car Democar=new Car(); DemoCar.set_number(6868); DemoCar.show_number(); My car No. is : 68684.9 創(chuàng)建對象與定義構(gòu)造方法創(chuàng)建對象與定義構(gòu)造方法2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第59頁頁4.9.1 創(chuàng)建對象創(chuàng)建對象1.對象聲明對象聲明 像聲明基本類型的變量一樣,對象聲明的一般形式為:像聲明基本類型的變量一樣,對象聲明的一般形式為: 類名類名 對象名對象名;2.為對象分配內(nèi)存及初始化為對象分配內(nèi)存及初始化 分
53、配內(nèi)存及初始化形式如下:分配內(nèi)存及初始化形式如下: 對象名對象名 = new 構(gòu)造方法名構(gòu)造方法名(參數(shù)表參數(shù)表);3.創(chuàng)建對象要求:創(chuàng)建對象要求:首先需說明新建對象首先需說明新建對象所屬的類所屬的類,由與類同名的,由與類同名的構(gòu)造方法構(gòu)造方法給給出;出;然后要說明新建然后要說明新建對象的名字對象的名字,即賦值號左邊的對象名;,即賦值號左邊的對象名;賦值號右邊的賦值號右邊的new是為新建對象開辟內(nèi)存空間的運(yùn)算符,是為新建對象開辟內(nèi)存空間的運(yùn)算符,用用new運(yùn)算符開辟新建對象的內(nèi)存之后,系統(tǒng)運(yùn)算符開辟新建對象的內(nèi)存之后,系統(tǒng)自動(dòng)調(diào)用自動(dòng)調(diào)用構(gòu)構(gòu)造方法造方法初始化初始化該對象。若類中沒有定義構(gòu)造方
54、法,系統(tǒng)會(huì)該對象。若類中沒有定義構(gòu)造方法,系統(tǒng)會(huì)調(diào)用調(diào)用默認(rèn)的默認(rèn)的構(gòu)造方法。構(gòu)造方法。 2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第60頁頁4.9.2 對象的使用對象的使用4.對象的使用對象的使用對象的使用是通過一個(gè)對象的使用是通過一個(gè)引用類型引用類型的變量來實(shí)現(xiàn),包括引用對象的變量來實(shí)現(xiàn),包括引用對象的成員變量和方法,通過運(yùn)算符的成員變量和方法,通過運(yùn)算符“ . ”可以實(shí)現(xiàn)對變量的訪問可以實(shí)現(xiàn)對變量的訪問和方法的調(diào)用。使用對象的基本形式如下:和方法的調(diào)用。使用對象的基本形式如下: . . 例如:例如:BirthDate date;int day;day = date .
55、 day;/引用引用date的成員變量的成員變量daydate . tomorrow();/調(diào)用調(diào)用date的方法的方法tomorrow()2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第61頁頁4.9.3 定義和使用構(gòu)造方法定義和使用構(gòu)造方法構(gòu)造方法是類的一種特殊方法,它的特殊性主要體現(xiàn)在如下幾構(gòu)造方法是類的一種特殊方法,它的特殊性主要體現(xiàn)在如下幾個(gè)方面:個(gè)方面:1.構(gòu)造方法的方法名與類名構(gòu)造方法的方法名與類名相同相同。2.構(gòu)造方法構(gòu)造方法沒有返回類型沒有返回類型。3.構(gòu)造方法的主要作用是完成對象的構(gòu)造方法的主要作用是完成對象的初始化初始化工作。工作。4.構(gòu)造方法構(gòu)造方法不能
56、不能像一般方法那樣用像一般方法那樣用“對象對象.”顯式地直接調(diào)用,顯式地直接調(diào)用,應(yīng)該用應(yīng)該用new關(guān)鍵字調(diào)用構(gòu)造方法為新對象初始化。關(guān)鍵字調(diào)用構(gòu)造方法為新對象初始化。定義了構(gòu)造方法之后,就可以用如下的語句定義了構(gòu)造方法之后,就可以用如下的語句創(chuàng)建并初始化創(chuàng)建并初始化Student類的對象:類的對象:Student card1new Student(張三張三, 男男, 2004034567);Student card2new Student(李四李四, 女女, 2003034666);2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第62頁頁public class Employ
57、ee private String name; private int salary; public Employee(String n, int s) name = n;salary = s; public Employee(String n) this(n,0); public Employee() name = “Unknown”; 4.9.4 this若有一個(gè)類帶有若有一個(gè)類帶有幾個(gè)構(gòu)造函數(shù),幾個(gè)構(gòu)造函數(shù),如果想如果想復(fù)制復(fù)制其中其中一個(gè)構(gòu)造函數(shù)的一個(gè)構(gòu)造函數(shù)的功能到另一個(gè)構(gòu)功能到另一個(gè)構(gòu)造函數(shù)中,可以造函數(shù)中,可以通過使用通過使用關(guān)鍵字關(guān)鍵字thisthis作為一個(gè)方作為一個(gè)方法調(diào)用
58、法調(diào)用來達(dá)到這來達(dá)到這個(gè)目的。個(gè)目的。2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第63頁頁class ThisClass public void anotherMethod() Bank bank=new Bank(); bank.someMethod(this); class Circle int r; Circle(int r) this.r=r; public area() return r*r*3.14; 4.9.4 thisthis指指對象自身對象自身,它的一個(gè)主要作用是要將自己這個(gè)對,它的一個(gè)主要作用是要將自己這個(gè)對象象當(dāng)作參數(shù)當(dāng)作參數(shù),傳送傳送給別的對象中的方
59、法。給別的對象中的方法。2022-4-4 21:43武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第64頁頁public class apple extends fruits public apple(int price) super(price); super.var = value; super.method(paraList); 4.9.5 supersuper指一個(gè)對象的指一個(gè)對象的直接父類直接父類。super可以用來可以用來引用父引用父類中類中的的(被覆蓋的被覆蓋的)方法、方法、(被隱藏的被隱藏的)變量及構(gòu)造方法。變量及構(gòu)造方法。該程序表示該程序表示使 用 父 類 的使 用 父 類 的構(gòu) 造 方
60、 法 生構(gòu) 造 方 法 生成 實(shí) 例 ,成 實(shí) 例 ,supersuper必須是必須是子 類 構(gòu) 造 方子 類 構(gòu) 造 方法 的法 的 第 一 條第 一 條語句語句。2022-4-4 21:44武漢大學(xué)珞珈學(xué)院武漢大學(xué)珞珈學(xué)院第第65頁頁4.10 類修飾符類修飾符在定義類時(shí),類名前面可以冠以修飾符。在定義類時(shí),類名前面可以冠以修飾符。修飾符修飾符非訪問控非訪問控制符制符訪問控制訪問控制符符修飾符修飾的對象分為兩個(gè)層次:修飾符修飾的對象分為兩個(gè)層次:1.在類這個(gè)層次;在類這個(gè)層次;2.在類的內(nèi)部修飾成員變量和成員方法這個(gè)層次。在類的內(nèi)部修飾成員變量和成員方法這個(gè)層次。2022-4-4 21:44
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年及未來5年市場數(shù)據(jù)中國雙攝像頭手機(jī)行業(yè)發(fā)展運(yùn)行現(xiàn)狀及發(fā)展趨勢預(yù)測報(bào)告
- 2026年及未來5年市場數(shù)據(jù)中國椰雕工藝品行業(yè)市場深度研究及投資策略研究報(bào)告
- 老年慢性疼痛的文化管理策略
- 吉林省知識(shí)課件
- 乳腺超聲考試題及答案
- 追溯技術(shù)的歷史
- 2022年工作參考總結(jié)老年協(xié)會(huì)工作參考總結(jié)
- 2025青海招警考試真題及答案
- 2026廈門銀行漳州分行社會(huì)招聘備考題庫及答案詳解(奪冠系列)
- 2026年陜西水務(wù)發(fā)展集團(tuán)及所屬企業(yè)招聘(20人)備考考試題庫及答案解析
- (2025年)鐵路貨運(yùn)考試題及答案
- 2026年榆能集團(tuán)陜西精益化工有限公司招聘備考題庫及參考答案詳解一套
- 2026年及未來5年中國化妝品玻璃瓶行業(yè)市場深度分析及發(fā)展趨勢預(yù)測報(bào)告
- 2026年魯教版初三政治上冊月考真題試卷(含答案)
- 物業(yè)春節(jié)前安全生產(chǎn)培訓(xùn)課件
- 企業(yè)安全生產(chǎn)責(zé)任制培訓(xùn)教材(標(biāo)準(zhǔn)版)
- 零缺陷培訓(xùn)教學(xué)課件
- 2026年餐飲企業(yè)稅務(wù)合規(guī)培訓(xùn)課件與發(fā)票管理風(fēng)控方案
- 2025年及未來5年市場數(shù)據(jù)中國蓖麻油行業(yè)投資潛力分析及行業(yè)發(fā)展趨勢報(bào)告
- 2025年湖北煙草專賣局真題試卷及答案
- 2025-2026學(xué)年廣東省廣州113中學(xué)八年級(上)期中語文試卷
評論
0/150
提交評論