JAVA程序設(shè)計(jì)(類與對象封裝屬性)_第1頁
JAVA程序設(shè)計(jì)(類與對象封裝屬性)_第2頁
JAVA程序設(shè)計(jì)(類與對象封裝屬性)_第3頁
JAVA程序設(shè)計(jì)(類與對象封裝屬性)_第4頁
JAVA程序設(shè)計(jì)(類與對象封裝屬性)_第5頁
已閱讀5頁,還剩58頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、西南財(cái)經(jīng)大學(xué) 前一頁 課間休息 回目錄問題引入1 汽車的發(fā)明過程經(jīng)歷了四輪馬車,有動(dòng)力的汽車。從思維過程來講,經(jīng)歷了具體到抽象。2 金首飾的制造也是從具體到抽象,3 程序設(shè)計(jì)的思路也是從面向過程到面向?qū)ο笏枷胧牵? 任何事物都是對象。2 任何對象包括屬性和行為3 相同(相似)屬性和行為就是“一類”4 例如,人與楊祥茂 ;汽車與我的汽車5 類是對象的抽象,對象是類的具體(實(shí)例化)。西南財(cái)經(jīng)大學(xué) 前一頁 課間休息 回目錄基本概念1對象,具體事物就是對象2類 ,具有相同屬性和行為的對象的集合3類之間的關(guān)系。3.1 封裝:把對象和行為看成是不可分開的整體;把信息對外隱藏起來,讓該知道對象知道。3.2

2、繼承: 反映事物的一般的類,在此基礎(chǔ)上派生出新類。如汽車派生出轎車。學(xué)校人員派生出學(xué)生和教師類3.3 多態(tài)性:允許程序中出現(xiàn)重名現(xiàn)象。分為: 方法重載:多個(gè)方法名相同,但是參數(shù)的個(gè)數(shù)或類型不同 對象多態(tài):子類與父類進(jìn)行相互轉(zhuǎn)換并且根據(jù)子類的不同完成不同的功能。3.4 消息西南財(cái)經(jīng)大學(xué) 前一頁 課間休息 回目錄描述方法o1 圖的描述方法,還需要進(jìn)一步分析和研究o2 java的描述形式西南財(cái)經(jīng)大學(xué) 前一頁 課間休息 回目錄類的描述(java)格式:Class 類名 數(shù)據(jù)類型 屬性; /屬性描述.Public 返回值的類型 方法名(參數(shù)表) /行為描述return 表達(dá)式;把屬性名稱為成員變量西南財(cái)

3、經(jīng)大學(xué) 前一頁 課間休息 回目錄類的描述示例 class person String name; int age; public void tell() System.out.println(“姓名:”+name+” 年齡:”+age); 注:public 是指任意地方都可以訪問。西南財(cái)經(jīng)大學(xué) 前一頁 課間休息 回目錄類的不同形式描述o程序描述與類圖描述o注意:不同點(diǎn),以及可以改進(jìn)的地方類實(shí)現(xiàn)了人們思維的抽象描述,但是客觀世界是一個(gè)個(gè)具體的實(shí)例或者說對象,那么如何從抽象到類,就是說從類到對象。西南財(cái)經(jīng)大學(xué) 前一頁 課間休息 回目錄對象的創(chuàng)建及其使用創(chuàng)建格式:類名 對象名 = null;對象名

4、= new 類名(); /方法與變量的描述方法一致的或者類名 對象名 = new 類名();例如class person String name; int age; public void tell() System.out.println(“姓名:”+name+”年齡:”+age); public class classdemo1 punlic static void main(String args) person yxm = new person();/創(chuàng)建對象yxm并申請空間 西南財(cái)經(jīng)大學(xué) 前一頁 課間休息 回目錄對象的使用方法屬性的使用方法 對象名稱.屬性名方法的使用方法 對象名稱.

5、方法名()oimport java.io.*;oclass PersonoString name;oint age;opublic void tell()oSystem.out.println( 姓名:+name+ 年齡:+age);ooopublic class classdemo3opublic static void main(String args)oPerson yxm = new Person(); = 楊祥茂;oyxm.age = 45;oyxm.tell();oo西南財(cái)經(jīng)大學(xué) 前一頁 課間休息 回目錄創(chuàng)建多個(gè)對象oimport java.io.*;oclass

6、 PersonoString name;oint age;opublic void tell()oSystem.out.println( 姓名:+name+ 年齡:+age);ooopublic class classdemo4opublic static void main(String args)oPerson yxm = new Person();oPerson per2 = new Person(); = 楊祥茂;oyxm.age = 45; = 張三;oper2.age = 20;ooyxm.tell();oper2.tell();oo西南財(cái)經(jīng)

7、大學(xué) 前一頁 課間休息 回目錄對象引用傳遞o/對象引用傳遞oimport java.io.*;oclass PersonoString name;oint age;opublic void tell()oSystem.out.println( 姓名:+name+ 年齡:+age);ooopublic class classdemo5opublic static void main(String args)oPerson yxm;oyxm = new Person();oPerson per2 = yxm; = 楊祥茂;oyxm.age = 45; = 張

8、三;oper2.age = 20;ooyxm.tell();oper2.tell();oo西南財(cái)經(jīng)大學(xué) 前一頁 課間休息 回目錄封裝性封裝性就是外部不可見。那么為什么要有封裝性?請看下面程序西南財(cái)經(jīng)大學(xué) 前一頁 課間休息 回目錄o/對象封裝性的引入oimport java.io.*;oclass PersonoString name;oint age;opublic void tell()oSystem.out.println( 姓名:+name+ 年齡:+age);ooopublic class classdemo6opublic static void main(String args)o

9、Person yxm;oyxm = new Person(); = 楊祥茂;oyxm.age = -45;oooyxm.tell();ooo出現(xiàn)了:年齡為負(fù)值,與實(shí)際有差距。西南財(cái)經(jīng)大學(xué) 前一頁 課間休息 回目錄原因在于對象對屬性的直接訪問,改為屬性封裝封裝的辦法:Private 屬性類型 變量;Private 方法的返回值 方法名(參數(shù)表)例如西南財(cái)經(jīng)大學(xué) 前一頁 課間休息 回目錄編譯報(bào)錯(cuò),屬性是私有的,不能由對象來直接訪問。o/對象封裝性的實(shí)現(xiàn)oimport java.io.*;oclass Personoprivate String name;oprivate int

10、 age;opublic void tell()oSystem.out.println( 姓名:+name+ 年齡:+age);ooopublic class classdemo7opublic static void main(String args)oPerson yxm;oyxm = new Person(); = 楊祥茂;oyxm.age = -45;oooyxm.tell();ooo西南財(cái)經(jīng)大學(xué) 前一頁 課間休息 回目錄被封裝的屬性,必須通過setter和getter來實(shí)現(xiàn)到屬性的訪問o/對象封裝性的實(shí)現(xiàn)oimport java.io.*;oclass Perso

11、noprivate String name;oprivate int age;opublic void setName(String n)oname = n;oopublic void setAge(int a)oage = a;oopublic String getName()oreturn name;oopublic int setAge()oreturn age;ooopublic void tell()oSystem.out.println( 姓名:+name+ 年齡:+age);ooopublic class classdemo8opublic static void main(St

12、ring args)oPerson yxm;oyxm = new Person();ooyxm.setName(楊祥茂);oyxm.setAge(-45);oooyxm.tell();ooo西南財(cái)經(jīng)大學(xué) 前一頁 課間休息 回目錄總結(jié)o只要被private (封裝)的屬性和方法必須通過setter和getter方法來設(shè)置和取得數(shù)據(jù)。西南財(cái)經(jīng)大學(xué) 前一頁 課間休息 回目錄問題:可以執(zhí)行,但是還是出現(xiàn)原來的結(jié)果只需在setAge()方法中加一條語句,驗(yàn)證代碼opublic void setAge(int a)oif(a=0 & a=0 & a=0 & a+this);oret

13、urn null;/目的是不讓出錯(cuò)ooopublic class classdemo17opublic static void main(String args)oPerson per1 = new Person();oPerson per2 = new Person();oSystem.out.println(main方法調(diào)用-+per1);/直接打印對象oper1.getInfor(); /使用thisooo西南財(cái)經(jīng)大學(xué) 前一頁 課間休息 回目錄oclass Personopublic String getInfor()oSystem.out.println(Person類-+this);

14、oreturn null;/目的是不讓出錯(cuò)ooopublic class classdemo17opublic static void main(String args)oPerson per1 = new Person();oPerson per2 = new Person();oSystem.out.println(main方法調(diào)用-+per1);/直接打印對象oper1.getInfor(); /使用thisooo結(jié)果是一致的西南財(cái)經(jīng)大學(xué) 前一頁 課間休息 回目錄西南財(cái)經(jīng)大學(xué) 前一頁 課間休息 回目錄兩個(gè)串比較String str1 = new String(“aaaa”);String

15、 str2 new String(“bbbb”);Str1.equal(str2);其中的當(dāng)前對象是if(str1 = str2)是指?西南財(cái)經(jīng)大學(xué) 前一頁 課間休息 回目錄Static的引入在前面的介紹中我們知道,如果一個(gè)類被實(shí)例化對象時(shí)要開辟內(nèi)存空間,在內(nèi)存中保存對象中的屬性,每個(gè)對象有自己的屬性。如果希望有些屬性被其他對象共享(理解共享概念),則必須聲明為static(也稱謂靜態(tài)屬性或靜態(tài)成員變量),并且一個(gè)屬性使用了static 聲明以后可以使用類名進(jìn)行調(diào)用。 如果方法希望是類方法,也需要前面加static西南財(cái)經(jīng)大學(xué) 前一頁 課間休息 回目錄使用static 聲明屬性oclass P

16、ersonoString name;oint age;oString city = aaaa;opublic Person(String name,int age) = name;othis.age = age;oopublic void inFor()oSystem.out.println(姓名:++ 年齡: +this.age+ 城市 +this.city);ooopublic class classdemo18opublic static void main(String args)oPerson per1 = new Person(張三,30);o

17、Person per2 = new Person(里斯,35);oPerson per3 = new Person(王五,34);oSystem.out.println(修改前_);oper1.inFor();oper2.inFor();oper3.inFor();oSystem.out.println(修改后_);oper1.city = bbbb;oper1.inFor();oper2.inFor();oper3.inFor();oo把 city改為類屬性,如何?西南財(cái)經(jīng)大學(xué) 前一頁 課間休息 回目錄使用static 聲明屬性oclass PersonoString name;oint a

18、ge;ostatic String city = aaaa;opublic Person(String name,int age) = name;othis.age = age;oopublic void inFor()oSystem.out.println(姓名:++ 年齡: +this.age+ 城市 +this.city);ooopublic class classdemo18opublic static void main(String args)oPerson per1 = new Person(張三,30);oPerson per2 = new

19、 Person(里斯,35);oPerson per3 = new Person(王五,34);oSystem.out.println(修改前_);oper1.inFor();oper2.inFor();oper3.inFor();oSystem.out.println(修改后_);oper1.city = bbbb;oper1.inFor();oper2.inFor();oper3.inFor();oo西南財(cái)經(jīng)大學(xué) 前一頁 課間休息 回目錄對于類屬性的調(diào)用方式o為了區(qū)分類屬性的使用,類屬性的調(diào)用方式,最好采用o 類名.屬性名例如,上例中:對 city的使用最好使用Person.city的形式

20、把 per1.city = “BBB”;改為Person.city = “BBB”;This.city 改為Person.city西南財(cái)經(jīng)大學(xué) 前一頁 課間休息 回目錄使用static 聲明方法o把對象不依賴具體實(shí)例的方法,寫成靜態(tài)方法,例如math類中的random,pow,sin 等,main方法。能從類中直接調(diào)用。o例如,圓有自己的半徑,所以圓和半徑都不能是靜態(tài)方法和靜態(tài)變量。應(yīng)該是實(shí)例變量和方法。o好處:1 為了區(qū)分不同的方法,對于靜態(tài)方法的調(diào)用常采用“類名.方法名”的使用方式2不能在類方法中使用 this 關(guān)鍵字3類方法可以調(diào)用其他的類方法和類成員變量。不能調(diào)用非static 類型聲

21、明的屬性和方法例如西南財(cái)經(jīng)大學(xué) 前一頁 課間休息 回目錄oclass Person o private String name;o private int age;o private static String city = 成都;/靜態(tài)變量o public static void setCity(String c)/靜態(tài)方法o city = c;o o public Person(String name ,int age)o = name;o this.age = age;o o public void Infor()o System.out.println(姓名:+th

22、+ 年齡:+this.age+ 城市:+Person.city);o o public static String getcity()o return city;o o opublic class classdemo19opublic static void main(String args)oPerson p1 = new Person(杭三,30);oPerson p2 = new Person(里斯,20);oPerson p3 = new Person(王五,27);oSystem.out.println( 修改前-);op1.Infor();op2.Infor();o

23、p3.Infor();o System.out.println(修改后_);o Person.setCity(上海);o p1.Infor();o p2.Infor();o p3.Infor(); oooo 西南財(cái)經(jīng)大學(xué) 前一頁 課間休息 回目錄 static的典型應(yīng)用oclass demooprivate static int count = 0;opublic demo()ocount+;oSystem.out.println(產(chǎn)生了+count+個(gè)對象!);ooopublic class classdemo20opublic static void main(String args)on

24、ew demo();onew demo();onew demo();oooo常用來計(jì)數(shù)西南財(cái)經(jīng)大學(xué) 前一頁 課間休息 回目錄靜態(tài)方法(類方法)class Sumint x,y,z;/成員變量static int getContinueSum(int start,int end)/設(shè)置靜態(tài)方法int sum = 0;for(int i = start ;i= end; i+)sum = sum + i;return sum;public class StaticFunctionSamplepublic static void main(String args)int result = Sum.g

25、etContinueSum(10,100);/調(diào)用靜態(tài)方法System.out.println(result);西南財(cái)經(jīng)大學(xué) 前一頁 課間休息 回目錄對象數(shù)組o定義:就是指一組相關(guān)對象的集合,用數(shù)組來描述。o格式類 對象數(shù)組名 = new 類數(shù)組長度 例如西南財(cái)經(jīng)大學(xué) 前一頁 課間休息 回目錄oclass Peopleoprivate String name;opublic People(String name) = name;oopublic String getInfor()oreturn ;ooopublic class classdemo20opu

26、blic static void main(String args)oPeople stu = new People3;/定義對象數(shù)組ooSystem.out.println(_);ofor(int i = 0; i stu.length;i+)oSystem.out.print(stui+ );ooSystem.out.println();o/給每個(gè)數(shù)組元素賦值ostu0 = new People(張三);ostu1 = new People(里斯);ostu2 = new People(王五);oSystem.out.println(_);ofor(int i = 0;istu.length;i+)oSys

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論