對象類方法ppt課件_第1頁
對象類方法ppt課件_第2頁
對象類方法ppt課件_第3頁
對象類方法ppt課件_第4頁
對象類方法ppt課件_第5頁
已閱讀5頁,還剩66頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Chapter 3面向?qū)ο蟮木幊碳夹g(shù)面向?qū)ο蟮木幊碳夹g(shù)長沙民政職業(yè)技術(shù)學院回想回想 循環(huán)語句循環(huán)語句while、do-while、for的區(qū)別是什么?的區(qū)別是什么? int i = 0, j = 0; while(i4) System.out.println(*); i+; continue; System.out.println(*); j+; i+; *寫出運轉(zhuǎn)結(jié)果寫出運轉(zhuǎn)結(jié)果輸出輸出回想回想 public class Test public static void main(String args) for(int i=0;i= 0i- -萬物皆對象萬物皆對象v 世界是由什么組成的?世界

2、是由什么組成的? 名勝名勝 人人 物品物品 動物動物 ,植物,植物 身邊的對象身邊的對象布蘭尼布蘭尼朱麗葉朱麗葉顧客顧客姓名:朱麗葉姓名:朱麗葉年齡:年齡:28體重:體重:52千克千克操作:操作:購買商品購買商品姓名:布蘭尼姓名:布蘭尼職銜:收銀員職銜:收銀員年齡:年齡:35體重:體重:60千克千克操作:操作:收款收款打印賬單打印賬單對象的特征對象的特征屬性屬性v 屬性屬性對象具有的各種特征對象具有的各種特征v 每個對象的每個屬性都擁有特定值每個對象的每個屬性都擁有特定值v 例如:布蘭尼和朱麗葉的體重不一樣例如:布蘭尼和朱麗葉的體重不一樣 60kg 布蘭尼布蘭尼屬性屬性 35歲歲收銀員布蘭收銀

3、員布蘭尼尼 對象的特征對象的特征方法方法v 方法方法對象執(zhí)行的操作對象執(zhí)行的操作 打單打單 收銀收銀 方法方法 刷卡刷卡 收銀員布蘭尼收銀員布蘭尼對象的屬性和方法對象的屬性和方法v 列出尼古拉斯凱奇駕駛的這輛法拉利F360 Spider的屬性和方法v 列出小狗對象的屬性和方法屬性:屬性: 品牌:法拉利品牌:法拉利 型號:型號:F360 Spider 顏色:黃色顏色:黃色 價錢:價錢:380萬元萬元方法:方法: 發(fā)動發(fā)動 停頓停頓 加速加速屬性:屬性: 顏色:白色顏色:白色方法:方法: 叫叫 跑跑 吃吃思索思索v 說一說教室里的對象v 描畫他們的屬性和方法 顏色:黑色顏色:黑色品牌:品牌:BEN

4、Q投影投影姓名:張三姓名:張三年齡:年齡:20學習學習類型:白熾類型:白熾燈燈開開關(guān)關(guān)變亮變亮變暗變暗材制材制: 木質(zhì)木質(zhì)支撐物品支撐物品封裝封裝v 對象同時具有屬性和方法兩項特性對象同時具有屬性和方法兩項特性v 對象的屬性和方法通常被封裝在一同,共同表達事物的特對象的屬性和方法通常被封裝在一同,共同表達事物的特性,性, 二者相輔相承,不能分割二者相輔相承,不能分割誰看見過只需誰看見過只需“完完好的零件和顏色好的零件和顏色而不能開動的汽車而不能開動的汽車?從對象籠統(tǒng)出從對象籠統(tǒng)出“類類抽取出以下對象的屬性和方法的共同特征抽取出以下對象的屬性和方法的共同特征 顧客顧客 類類顧客類顧客類轎車類轎車

5、類 類是模子,確定對象將會擁有的類是模子,確定對象將會擁有的特征屬性和行為方法特征屬性和行為方法 類是對象的類型類是對象的類型 不同于不同于int類型:具有方法類型:具有方法 各種口味的球狀冰淇淋各種口味的球狀冰淇淋 球狀冰淇淋模子球狀冰淇淋模子思索思索v 類和對象有什么區(qū)別呢?類和對象有什么區(qū)別呢?v 類是籠統(tǒng)的概念,僅僅是模板,比如說:類是籠統(tǒng)的概念,僅僅是模板,比如說:“人人v 對象是一個他可以看得到、摸得著的詳細實體,比如:對象是一個他可以看得到、摸得著的詳細實體,比如:“小布什小布什小布什小布什普京普京克林頓克林頓“人人”類類特征(屬性)特征(屬性)年齡年齡體重體重行為(方法)行為(

6、方法)衣衣食食住住行行Java 是面向?qū)ο蟮难哉Z是面向?qū)ο蟮难哉Z 一切一切Java程序都以類程序都以類class為組織單元為組織單元 關(guān)鍵字關(guān)鍵字class定義自定義的數(shù)據(jù)類型定義自定義的數(shù)據(jù)類型 public class Hello public static void main(String args) System.out.println(運用運用Java言語了解程序邏輯言語了解程序邏輯); Java類模板類模板v 類將現(xiàn)實世界中的概念模擬到計算機程序中類將現(xiàn)實世界中的概念模擬到計算機程序中public class 類名類名 /定義屬性部分定義屬性部分 屬性屬性1的類型的類型 屬性屬性1

7、; 屬性屬性2的類型的類型 屬性屬性2; 屬性屬性n的類型的類型 屬性屬性n; /定義方法部分定義方法部分 方法方法1; 方法方法2; 方法方法m;定義類定義類v定義一個類的步驟定義一個類的步驟v1、定義類名、定義類名v2、編寫類的屬性、編寫類的屬性v3、編寫類的方法、編寫類的方法類例如類例如2-1 長沙民政職業(yè)技術(shù)學院設有民政系、社會任務系、經(jīng)濟貿(mào)易系、軟件學院等多個院系,用類的思想輸出各個院系的信息School類類屬性:屬性:院系全稱院系全稱教師人數(shù)教師人數(shù)學生人數(shù)學生人數(shù)方法:方法:展示信息展示信息類例如類例如2-2public class School /定義學院的屬性定義學院的屬性

8、String schoolName; / 院系稱號院系稱號 int techNum; /教師人數(shù)教師人數(shù) int stuNum; /學生人數(shù)學生人數(shù) / 定義展現(xiàn)院系的方法定義展現(xiàn)院系的方法 public String toString() return “民政學院的民政學院的 +schoolName + “n + “擁有:擁有:+ techNum + “名教師名教師 + stuNum + “名學生名學生; 定義類的定義類的toString()方法,方法,用于輸出類相關(guān)的信息用于輸出類相關(guān)的信息 public String toString() return 字符串;字符串; /方法體方法體

9、成員變量成員變量常見錯誤常見錯誤public class .Book String bookName; String authorName; int pageNum; boolean isAvailable; 類命名規(guī)那么:類命名規(guī)那么:1、不能運用、不能運用Java關(guān)鍵字關(guān)鍵字2、首字母可以為字母,也可以是、首字母可以為字母,也可以是“_或或“$ (建議建議不要這樣不要這樣)3、不能包含空格或、不能包含空格或“.號號代碼錯誤代碼錯誤如何創(chuàng)建和運用對象如何創(chuàng)建和運用對象v 運用對象的步驟:運用對象的步驟:v 運用運用new創(chuàng)建類的一個對象創(chuàng)建類的一個對象v 運用對象:運用運用對象:運用“.進展

10、以下操作進展以下操作v 給類的屬性賦值:對象名給類的屬性賦值:對象名.屬性屬性v 調(diào)用類的方法:對象名調(diào)用類的方法:對象名.方法名方法名()School sc= new School();sc.schoolName = “軟件學院軟件學院; /給屬性賦值給屬性賦值sc.toString(); /調(diào)用類的方法,該方法中的操作將被執(zhí)調(diào)用類的方法,該方法中的操作將被執(zhí)行行public class InitialSchool public static void main(String args) School sc= new School(); System.out.println(sc); sc.

11、schoolName = “軟件學院軟件學院; sc.stuNum = 3000; sc.techNum = 100; System.out.println(sc); 創(chuàng)建和運用對象例如創(chuàng)建和運用對象例如創(chuàng)建創(chuàng)建“軟件學院對象軟件學院對象演示例如演示例如2:創(chuàng)建和運用對象:創(chuàng)建和運用對象說一說看說一說看到什么效到什么效果?果? 調(diào)用類的調(diào)用類的toString()方法是特方法是特例:這里運用例:這里運用center.toString()和和center作用作用一樣一樣更簡便更簡便綜合案例綜合案例v 編寫學生類,輸出學生相關(guān)信息編寫學生類,輸出學生相關(guān)信息v 編寫教員類,輸出教員相關(guān)信息編寫教員

12、類,輸出教員相關(guān)信息學生類學生類屬性:屬性:姓名姓名年齡年齡參加的課程參加的課程興趣興趣方法:方法:顯示學員個人信息顯示學員個人信息教員類教員類屬性:屬性:姓名姓名專業(yè)方向?qū)I(yè)方向教授的課程教授的課程教齡教齡方法:方法:顯示教員個人信息顯示教員個人信息 學生類參考代碼學生類參考代碼 教員類參考代碼教員類參考代碼 測試類參考代碼測試類參考代碼演示例如演示例如3:創(chuàng)建和運用類和對象:創(chuàng)建和運用類和對象練習練習v 編寫一個音樂類,并編寫測試類顯示音樂信息編寫一個音樂類,并編寫測試類顯示音樂信息v 編寫一個手機類,并編寫測試類顯示手機信息編寫一個手機類,并編寫測試類顯示手機信息 音樂類參考代碼音樂類參

13、考代碼 手機類參考代碼手機類參考代碼 測試類參考代碼測試類參考代碼 測試類參考代碼測試類參考代碼面向?qū)ο竺嫦驅(qū)ο驩O的優(yōu)點的優(yōu)點v 便于程序模擬現(xiàn)實世界中的實體便于程序模擬現(xiàn)實世界中的實體v 用用“類表示實體的特征和行為類表示實體的特征和行為v 隱藏細節(jié)隱藏細節(jié)v 對象的行為和屬性被封裝在類中,外界經(jīng)過調(diào)用類的方法對象的行為和屬性被封裝在類中,外界經(jīng)過調(diào)用類的方法來獲得,不需關(guān)注內(nèi)部細節(jié)如何實現(xiàn)來獲得,不需關(guān)注內(nèi)部細節(jié)如何實現(xiàn)v 可重用可重用v 可以經(jīng)過類的模板,創(chuàng)建多個類的對象可以經(jīng)過類的模板,創(chuàng)建多個類的對象數(shù)據(jù)類型總結(jié)數(shù)據(jù)類型總結(jié)intdoublechar String運用運用class

14、定義的類型定義的類型StudentTeacherSchool根本數(shù)據(jù)類型根本數(shù)據(jù)類型援用數(shù)據(jù)類型援用數(shù)據(jù)類型數(shù)據(jù)類型運用區(qū)別數(shù)據(jù)類型運用區(qū)別數(shù)據(jù)類型數(shù)據(jù)類型特征特征聲明聲明使用使用基本數(shù)據(jù)類型基本數(shù)據(jù)類型沒有方法沒有方法int i= 8;i+;引用數(shù)據(jù)類型引用數(shù)據(jù)類型具有方法具有方法Student stu = new Student();stu.age+;小結(jié)小結(jié) v 類和對象的區(qū)別是什么?類和對象的區(qū)別是什么?v 數(shù)據(jù)類型有哪兩類?如何運用?數(shù)據(jù)類型有哪兩類?如何運用?public class &Student String name; char sex; int age; publ

15、ic String tostring() return name + t + sex + t + age; public static void main(String args) Student stu = new Student(); name = 神仙姐姐神仙姐姐; sex = F; age = 18; System.out.println(stu); Student toSstu.sexstu.age 實現(xiàn)輸出學生信息,下面代碼有哪些錯誤?實現(xiàn)輸出學生信息,下面代碼有哪些錯誤?類的方法類的方法v 寫出獅子對象的寫出獅子對象的“跑方法跑方法v 寫出獅子對象的寫出

16、獅子對象的“叫方法叫方法 電動玩具獅子電動玩具獅子屬性:屬性:顏色:黃色顏色:黃色行為:行為:跑跑叫叫按此按鈕,按此按鈕,獅子開場跑獅子開場跑類的方法例如類的方法例如public class AutoLion String color = 黃色黃色; public void run() System.out.println(正在以正在以0.1米米/秒的速度向前奔跑秒的速度向前奔跑); public String bark() String sound = 吼吼 ; return sound; AutoLion類代碼實現(xiàn)類代碼實現(xiàn)方法稱號方法稱號方法體方法體前往類型前往類型如何定義類的方法如何定

17、義類的方法v類的方法定義類的某種行為或功能類的方法定義類的某種行為或功能 方法的定義方法的定義 方法的稱號方法的稱號 方法的主體方法的主體 方法前往的數(shù)據(jù)類型方法前往的數(shù)據(jù)類型 定義類的方法定義類的方法public 前往值類型前往值類型 方法名方法名() /這里編寫方法的主體這里編寫方法的主體步驟一:定義方步驟一:定義方法名以及前往值法名以及前往值步驟二:編寫方步驟二:編寫方法體法體方法的命名方法的命名v 如何給方法起名字?如何給方法起名字?v 必需以字母、必需以字母、_或或開頭開頭v 可以包括數(shù)字,但不能以它開頭可以包括數(shù)字,但不能以它開頭v 遵照的命名規(guī)范遵照的命名規(guī)范v 通常方法名是一個

18、動詞,假設有兩個以上單詞組成,第一通常方法名是一個動詞,假設有兩個以上單詞組成,第一個單詞的首字母小寫,其后單詞首字母大寫個單詞的首字母小寫,其后單詞首字母大寫方法的前往值方法的前往值v 兩種情況兩種情況v 假設方法具有前往值,方法中必需運用關(guān)鍵字假設方法具有前往值,方法中必需運用關(guān)鍵字return前前往該值,前往類型為該前往值的類型往該值,前往類型為該前往值的類型v 假設方法沒有前往值,前往類型為假設方法沒有前往值,前往類型為voidpublic class Student String name = 張三張三; public void getName() return name; 前往類型

19、要匹配前往類型要匹配return 表達式;表達式;編譯錯誤編譯錯誤常見錯誤常見錯誤2-1public class School public static void main(String args) return “軟件學院歡迎您!軟件學院歡迎您! ; 前往類型是前往類型是void方法中不能有前往值方法中不能有前往值 常見錯誤常見錯誤2-2public class Student public double getInfo() double weight = 95.5; double height = 1.69; return weight, height; 方法至多可以前往一個值,方法至多

20、可以前往一個值,不能前往多個值不能前往多個值方法調(diào)用方法調(diào)用v 方法是個方法是個“黑匣子,完成某個特定的運用程序功能,并黑匣子,完成某個特定的運用程序功能,并前往結(jié)果前往結(jié)果v 方法調(diào)用:執(zhí)行方法中包含的語句方法調(diào)用:執(zhí)行方法中包含的語句v 對象名對象名.方法名方法名;小明過生日,爸爸送他一個電動獅子玩具,編程小明過生日,爸爸送他一個電動獅子玩具,編程測試這個獅子能否正常任務測試這個獅子能否正常任務 演示例如演示例如1:演示運轉(zhuǎn)效果:演示運轉(zhuǎn)效果 方法調(diào)用方法調(diào)用 public class AutoLion String color = 黃色黃色; public void run() /方法方

21、法1:跑:跑 System.out.println(正在以正在以0.1米米/秒的速度向前奔跑。秒的速度向前奔跑。); public String bark() /方法方法2:叫:叫 String sound = 吼吼 ; return sound; public String getColor() /方法方法3:獲得顏色屬性:獲得顏色屬性 return color; public String showLion() /方法方法4:描畫獅子特性:描畫獅子特性 return 這是一個這是一個 + getColor() + 的玩具獅子的玩具獅子! ; public class TestLion pu

22、blic static void main(String args) AutoLion lion = new AutoLion(); System.out.println(lion.showLion(); lion.run(); System.out.println(lion.bark(); 在類的方法中調(diào)用在類的方法中調(diào)用該類另一個方法該類另一個方法在在main()方法中方法中調(diào)用類的方法調(diào)用類的方法 演示例如演示例如2:設置斷點演示方法調(diào)用執(zhí)行過程:設置斷點演示方法調(diào)用執(zhí)行過程 方法調(diào)用小結(jié)方法調(diào)用小結(jié)v 方法之間允許相互調(diào)用,不需求知道方法的詳細實現(xiàn),提高了效率v 情況情況舉例舉例1、類

23、、類Student 的方法的方法a()調(diào)用調(diào)用Student類類的方法的方法b(),直接調(diào)用,直接調(diào)用public void a() b(); /調(diào)用調(diào)用b() 2、類、類Student的方法的方法a()調(diào)用類調(diào)用類Teacher的方法的方法b(),先創(chuàng)建類對象,然后使用,先創(chuàng)建類對象,然后使用“.”調(diào)用調(diào)用public void a() Teacher t = new Teacher(); t.b(); /調(diào)用調(diào)用Teacher類的類的b() 變量作用域變量作用域3-1public class AutoLion String color = 黃色黃色; public void run() /

24、方法方法1:跑:跑 System.out.println(正在以正在以0.1米米/秒的速度向前奔跑。秒的速度向前奔跑。); public String bark() /方法方法2:叫:叫 String sound = 吼吼 ; return sound; public String getColor() /方法方法3:獲得顏色屬性:獲得顏色屬性 return color ; public String showLion() /方法方法4:輸出類的描畫信息:輸出類的描畫信息 return 這是一個這是一個 + getColor() + 的玩具獅子的玩具獅子!叫聲是叫聲是 + sound ; 可以

25、調(diào)用嗎?可以調(diào)用嗎? 演示例如演示例如3 3:變量作用域:變量作用域 變量作用域變量作用域3-2v 變量聲明的位置決議變量作用域變量聲明的位置決議變量作用域v 變量作用域確定可在程序中按變量名訪問該變量的區(qū)域變量作用域確定可在程序中按變量名訪問該變量的區(qū)域for(int i = 0, a = 0; i 4; i+) a+;System.out.println(a);a的作用域僅在的作用域僅在for循環(huán)中循環(huán)中 代碼錯誤代碼錯誤變量作用域變量作用域3-3變量變量1類型類型 變量變量1; 變量變量2類型類型 變量變量2;變量變量3類型類型 變量變量3;public 前往類型前往類型 方法方法1()

26、 變量變量4類型類型 變量變量4;public 前往類型前往類型 方法方法2() 變量變量5類型類型 變量變量5; public class AutoLion AutoLion類的方法類的方法別的類的方法別的類的方法 誰能運用這些變量?誰能運用這些變量? 方法方法1 方法方法2 成員變量成員變量 部分變量部分變量 部分變量部分變量 練習練習 編寫手機類Phone:它可以下載音樂,可以播放這些音樂,可以進展充電 編寫電池類Cell:自動續(xù)電 編寫測試類Test手機類手機類行為:行為:播放下載的音樂播放下載的音樂下載下載充電充電電池類電池類屬性:屬性:品牌品牌行為:行為:續(xù)電續(xù)電手機類手機類電池類

27、電池類測試類測試類 演示例如演示例如5:演示效果:演示效果 帶參數(shù)的方法就在身邊帶參數(shù)的方法就在身邊public String concat (String str) public int indexOf (String value)public String substring (int index) 方法實施時需求接納某個值進展處置方法實施時需求接納某個值進展處置 前往值類型前往值類型 方法名方法名 參數(shù)參數(shù)為什么要用帶參數(shù)的方法為什么要用帶參數(shù)的方法v 任務原理任務原理新穎桃汁新穎桃汁新穎蘋果汁新穎蘋果汁新穎梨汁新穎梨汁輸輸出出三三種種果果汁汁如何運用帶參數(shù)的方法如何運用帶參數(shù)的方法v

28、定義帶參數(shù)的方法定義帶參數(shù)的方法v 調(diào)用帶參數(shù)的方法調(diào)用帶參數(shù)的方法public class Zhazhi /定義帶參數(shù)的定義帶參數(shù)的zhazhi方法方法 public String zhazhi ( String fruit ) String juice = fruit + 汁汁; return juice; /*調(diào)用調(diào)用zhazhi方法方法*/Zhazhi myZhazhi = new Zhazhi();String myFruit = 蘋果蘋果;String myJuice = myZhazhi.zhazhi(myFruit);System.out.println(myJuice);參數(shù)

29、列表:參數(shù)列表:(數(shù)據(jù)類型數(shù)據(jù)類型 參數(shù)參數(shù)1,數(shù)據(jù)類型數(shù)據(jù)類型 參數(shù)參數(shù)2)調(diào)用方法,傳送的參數(shù)要調(diào)用方法,傳送的參數(shù)要與參數(shù)列表一一對應與參數(shù)列表一一對應完好代碼演示完好代碼演示完好代碼演示完好代碼演示演示例如演示例如6 6:演示運轉(zhuǎn)效果:演示運轉(zhuǎn)效果帶參數(shù)的方法運用帶參數(shù)的方法運用2-1輸入學期代碼,輸出該學期的課程信息輸入學期代碼,輸出該學期的課程信息if (courseCode.equalsIgnoreCase(s1) System.out.println(第一學期的課程是:第一學期的課程是:); for(int i = 0; i s1Course.length; i+) Syste

30、m.out.println(s1Coursei); else if (courseCode.equalsIgnoreCase(s2) System.out.println(第二學期的課程是:第二學期的課程是:); for(int i = 0; i s2Course.length; i+) System.out.println(s2Coursei); else if (courseCode.equalsIgnoreCase(y2) System.out.println(第三學期的課程是:第三學期的課程是:); for(int i = 0; i y2Course.length; i+) Syste

31、m.out.println(y2Coursei); 反復代碼:反復代碼:實現(xiàn)一樣的功實現(xiàn)一樣的功能能“根據(jù)不同的根據(jù)不同的課程代號輸出課程代號輸出相應課程信息相應課程信息運用方法可以運用方法可以添加代碼重用添加代碼重用完好代碼演示完好代碼演示帶參數(shù)的方法運用帶參數(shù)的方法運用2-2更高效的代碼更高效的代碼public class School public void courseInfo(int courseCode, String course) System.out.println(courseCode + 的課程是:的課程是:); for(int i = 0; i 0; x-)z *= x

32、;/ 該循環(huán)求該循環(huán)求3的階乘的階乘System.out.println(3!= + z);/ 輸出輸出3的階乘的階乘for (x = 6, z = 1; x 0; x-)/ 該循環(huán)求該循環(huán)求6的階乘的階乘z *= x;System.out.println(6!= + z);/ 輸出輸出6的階乘的階乘for (x = 9, z = 1; x 0; x-)/ 該循環(huán)求該循環(huán)求9的階乘的階乘z *= x;System.out.println(9!= + z);/ 輸出輸出9的階乘的階乘 v 運用方法計算運用方法計算3、6和和9的階乘并輸出結(jié)果的階乘并輸出結(jié)果public class TestFun

33、ction2/第一個方法是第一個方法是main方法,它方法,它3次調(diào)用了第二個方法次調(diào)用了第二個方法public static void main(String args) factorial(3);factorial(6);factorial(9);/第二個方法是第二個方法是factorial方法,它求出參數(shù)方法,它求出參數(shù)n的階乘并輸出的階乘并輸出static void factorial(int n) long z=1L;int x=n;for( ;x0;x-)/該循環(huán)求該循環(huán)求n的階乘的階乘z*=x;System.out.println(n+!=+z);/輸出輸出n的階乘的階乘stat

34、ic void aMathod() /無參數(shù)的方法無參數(shù)的方法static void bMathod(int n) /有一個參數(shù)的方法有一個參數(shù)的方法static void cMathod(int n,int m,long k) /有多個參數(shù)的方法有多個參數(shù)的方法方法類型:方法類型: 方法名后小括號內(nèi)的參數(shù)指明了方法接納的外部輸入。方法名后小括號內(nèi)的參數(shù)指明了方法接納的外部輸入。假設一個方法不需求接納外部的輸入,那么參數(shù)為空,但方假設一個方法不需求接納外部的輸入,那么參數(shù)為空,但方法名后的小括號必需有,它是方法的標志。假設一個方法需法名后的小括號必需有,它是方法的標志。假設一個方法需求接納多個

35、外部的輸入,那么構(gòu)成參數(shù)列表,各個參數(shù)之間求接納多個外部的輸入,那么構(gòu)成參數(shù)列表,各個參數(shù)之間運用逗號分割。例如:運用逗號分割。例如:static void Mathod1() /無前往值的方法無前往值的方法static boolean Mathod2() /前往布爾值的方法前往布爾值的方法static int Mathod3() /前往整型值的方法前往整型值的方法方法類型:方法類型: 方法的前往值類型可以是根本數(shù)據(jù)類型也可以是對象,假方法的前往值類型可以是根本數(shù)據(jù)類型也可以是對象,假設沒有前往值,就用設沒有前往值,就用void來描畫。例如,來描畫。例如,main方法就沒有前往方法就沒有前往值

36、,而且必需沒有前往值。又如值,而且必需沒有前往值。又如 假設一個方法被定義成假設一個方法被定義成void類型,在方法中不需求類型,在方法中不需求return語句;否那么,由語句;否那么,由return語句所前往的值或表達式,必需與方語句所前往的值或表達式,必需與方法的前往值同屬于一個類型。法的前往值同屬于一個類型。v 運用方法前往值實現(xiàn)的階乘運用方法前往值實現(xiàn)的階乘public class TestFunctionRetupublic static void main(String args) long result = 0;result = factorial(3); / 調(diào)用方法并獲得前往

37、值調(diào)用方法并獲得前往值System.out.println(3!= + result);result = factorial(6); / 調(diào)用方法并獲得前往值調(diào)用方法并獲得前往值System.out.println(6!= + result);result = factorial(9); / 調(diào)用方法并獲得前往值調(diào)用方法并獲得前往值System.out.println(9!= + result);static long factorial(int n) long z = 1L;int x = n;for (; x 0; x-)/ 計算階乘計算階乘z *= x;return z; / 前往階乘值

38、前往階乘值與前面的實現(xiàn)對比與前面的實現(xiàn)對比看有什么差別看有什么差別方法調(diào)用案例方法調(diào)用案例 編寫成果計算類ScoreCalc 編寫測試類成績計算類成績計算類屬性:屬性:3門成績門成績(Java、C#、DB)方法:方法:計算平均成績計算平均成績顯示平均成績顯示平均成績計算總成績計算總成績顯示總成績顯示總成績成果計算類成果計算類測試類測試類 演示例如:方法調(diào)用演示例如:方法調(diào)用 面向?qū)ο蟮木幊趟枷朊嫦驅(qū)ο蟮木幊趟枷雟 ScoreCalc類類 和和 Test類類public static void main(String args) Scanner input = new Scanner(Syste

39、m.in); System.out.print(請輸入請輸入Java成果:成果:); int java = input.nextInt(); /*計算并顯示輸出計算并顯示輸出*/ int total = java + c + db; double avg = total / 3; System.out.print(總成果:總成果: + total); System.out.print(n平均分平均分: + avg);一次還可以接受,假設一次還可以接受,假設還要再執(zhí)行這個功能,還要再執(zhí)行這個功能,難道還要反復再寫?難道還要反復再寫?calcDiffTimecalcTotalScore()Scor

40、eCalcshowTotalScore()calcAvg()showAvg() main() /程序入口程序入口 /計算并輸出總成果計算并輸出總成果 /計算并輸出平均分計算并輸出平均分 Test調(diào)用調(diào)用調(diào)用調(diào)用類的方法實現(xiàn)某個特定的功能,類的方法實現(xiàn)某個特定的功能,別的類不需求知道它如何實現(xiàn)!別的類不需求知道它如何實現(xiàn)!知道了實現(xiàn)此功能的類和它的方法名,知道了實現(xiàn)此功能的類和它的方法名, 就可以直接調(diào)用了,不用反復寫代碼!就可以直接調(diào)用了,不用反復寫代碼! 方法中的參數(shù)方法中的參數(shù) v參數(shù)傳送參數(shù)傳送v在在Java言語中,向方法傳送參數(shù)的言語中,向方法傳送參數(shù)的方式之一是方式之一是“按值傳送。

41、按值傳送意味按值傳送。按值傳送意味著當將一個參數(shù)傳送給一個方法時,首先著當將一個參數(shù)傳送給一個方法時,首先創(chuàng)建了源參數(shù)的一個副本并將這個副本傳創(chuàng)建了源參數(shù)的一個副本并將這個副本傳入了方法,這樣方法接納的是原始值的一入了方法,這樣方法接納的是原始值的一個副本。個副本。 演示例如:變量賦值演示例如:變量賦值 public class TestPara static void test(boolean paratest) paratest = !paratest; System.out.println(In test (boolean) : test = + paratest); public st

42、atic void main(String args) boolean test = true; System.out.println(Before test (boolean) : test = + test); test(test); System.out.println(After test (boolean) : test = + test); 程序運轉(zhuǎn)結(jié)果:程序運轉(zhuǎn)結(jié)果:Before test(boolean) : test = trueIn test(boolean) : test = falseAfter test(boolean) : test = true由于方法接納的是一個

43、副本,所以即使在方法中修正了該參由于方法接納的是一個副本,所以即使在方法中修正了該參數(shù),那僅僅是改動副本,而源參數(shù)值堅持不變。數(shù),那僅僅是改動副本,而源參數(shù)值堅持不變。參數(shù)傳送參數(shù)傳送對象作為方法的參數(shù)對象作為方法的參數(shù) 當運用對象實例作為參數(shù)傳送給方法時,當運用對象實例作為參數(shù)傳送給方法時,參數(shù)的值是對對象的援用。也就是說,傳送參數(shù)的值是對對象的援用。也就是說,傳送給到方法內(nèi)部的是對象的援用值而不是對象給到方法內(nèi)部的是對象的援用值而不是對象的內(nèi)容。的內(nèi)容。在方法內(nèi)這個援用值不會被改動。但假設在方法內(nèi)這個援用值不會被改動。但假設經(jīng)過該援用值修正了所指向的對象的內(nèi)容,經(jīng)過該援用值修正了所指向的對

44、象的內(nèi)容,那么方法終了后,所修正的對象內(nèi)容可以保那么方法終了后,所修正的對象內(nèi)容可以保管下來。管下來。 對象傳參例如對象傳參例如class DemoTeacherpublic void print(Teacher1 t)System.out.println(姓名姓名:++ 年齡年齡:+t.age);public class Teacher1public String name; / 教師姓名教師姓名public int age;/年齡年齡 public Teacher1(String name, int age) = name; this.age = age;

45、public static void main(String args)Teacher1 t1 = new Teacher1(鳳姐鳳姐,25);DemoTeacher dt = new DemoTeacher();dt.print(t1);程序運轉(zhuǎn)結(jié)果:程序運轉(zhuǎn)結(jié)果:姓名姓名:鳳姐鳳姐 年齡年齡:25例如例如class TestObject private String name;public void setName(String pname) name = pname;public String getName() return name;假設以對象做入?yún)?,其值會不會發(fā)生變化呢?假設以對象

46、做入?yún)ⅲ渲禃粫l(fā)生變化呢?public class Testit private void modify(TestObject a, TestObject b) a.setName(xyz);b.setName(uvw);System.out.println(in test.);System.out.println(a.getName()= + a.getName();System.out.println(b.getName()= + b.getName();public static void main(String args) TestObject ta = new TestObjec

47、t();TestObject tb = new TestObject();Testit tc = new Testit();ta.setName(abc);tb.setName(def);System.out.println(before test.);System.out.println(ta.getName()= + ta.getName();System.out.println(tb.getName()= + tb.getName();tc.modify(ta, tb);System.out.println(after test.);System.out.println(ta.getNa

48、me()= + ta.getName();System.out.println(tb.getName()= + tb.getName();運轉(zhuǎn)結(jié)果:運轉(zhuǎn)結(jié)果:before test.ta.getName()=abctb.getName()=defin test.ta.getName()=xyztb.getName()=uvwafter test.ta.getName()=xyztb.getName()=uvw向向modify傳送了傳送了ta、tb兩個對象的援用,使兩個對象的援用,使方法內(nèi)的兩個對象與傳入方法內(nèi)的兩個對象與傳入方法的對象援用一樣都分方法的對象援用一樣都分別指向源參數(shù)別指向源參數(shù)t

49、a、tb兩個對兩個對象,即我們可以經(jīng)過這兩象,即我們可以經(jīng)過這兩個對象來操作源參數(shù)。個對象來操作源參數(shù)。例如例如class Integerint i;Integer(int i) this.i = i;public String toString()return +i;結(jié)論:只需修正了入?yún)ο?,其源對象都會相應變化?結(jié)論:只需修正了入?yún)ο?,其源對象都會相應變化?例如例如public class Swap public static void main(String args) Integer a, b; a = new Integer(10); b = new Integer(50); Sy

50、stem.out.println(before swap.); System.out.println(a is + a); System.out.println(b is + b); swap(a, b); System.out.println(after swap.); System.out.println(a is + a); System.out.println(b is + b); public static void swap(Integer pa, Integer pb) Integer temp = pa; pa = pb; pb = temp; System.out.println(in swap.); System.out.println(a is + pa);

溫馨提示

  • 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

提交評論