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

下載本文檔

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

文檔簡介

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

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

3、經大學 前一頁 課間休息 回目錄類的描述示例 class person String name; int age; public void tell() System.out.println(“姓名:”+name+” 年齡:”+age); 注:public 是指任意地方都可以訪問。西南財經大學 前一頁 課間休息 回目錄類的不同形式描述o程序描述與類圖描述o注意:不同點,以及可以改進的地方類實現了人們思維的抽象描述,但是客觀世界是一個個具體的實例或者說對象,那么如何從抽象到類,就是說從類到對象。西南財經大學 前一頁 課間休息 回目錄對象的創建及其使用創建格式:類名 對象名 = 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();/創建對象yxm并申請空間 西南財經大學 前一頁 課間休息 回目錄對象的使用方法屬性的使用方法 對象名稱.屬性名方法的使用方法 對象名稱.

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西南財經大學 前一頁 課間休息 回目錄創建多個對象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西南財經

7、大學 前一頁 課間休息 回目錄對象引用傳遞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西南財經大學 前一頁 課間休息 回目錄封裝性封裝性就是外部不可見。那么為什么要有封裝性?請看下面程序西南財經大學 前一頁 課間休息 回目錄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出現了:年齡為負值,與實際有差距。西南財經大學 前一頁 課間休息 回目錄原因在于對象對屬性的直接訪問,改為屬性封裝封裝的辦法:Private 屬性類型 變量;Private 方法的返回值 方法名(參數表)例如西南財經大學 前一頁 課間休息 回目錄編譯報錯,屬性是私有的,不能由對象來直接訪問。o/對象封裝性的實現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西南財經大學 前一頁 課間休息 回目錄被封裝的屬性,必須通過setter和getter來實現到屬性的訪問o/對象封裝性的實現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西南財經大學 前一頁 課間休息 回目錄總結o只要被private (封裝)的屬性和方法必須通過setter和getter方法來設置和取得數據。西南財經大學 前一頁 課間休息 回目錄問題:可以執行,但是還是出現原來的結果只需在setAge()方法中加一條語句,驗證代碼opublic void setAge(int a)oif(a=0 & a=0 & a=0 & a+this);oret

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

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

15、 str2 new String(“bbbb”);Str1.equal(str2);其中的當前對象是if(str1 = str2)是指?西南財經大學 前一頁 課間休息 回目錄Static的引入在前面的介紹中我們知道,如果一個類被實例化對象時要開辟內存空間,在內存中保存對象中的屬性,每個對象有自己的屬性。如果希望有些屬性被其他對象共享(理解共享概念),則必須聲明為static(也稱謂靜態屬性或靜態成員變量),并且一個屬性使用了static 聲明以后可以使用類名進行調用。 如果方法希望是類方法,也需要前面加static西南財經大學 前一頁 課間休息 回目錄使用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改為類屬性,如何?西南財經大學 前一頁 課間休息 回目錄使用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西南財經大學 前一頁 課間休息 回目錄對于類屬性的調用方式o為了區分類屬性的使用,類屬性的調用方式,最好采用o 類名.屬性名例如,上例中:對 city的使用最好使用Person.city的形式

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

21、明的屬性和方法例如西南財經大學 前一頁 課間休息 回目錄oclass Person o private String name;o private int age;o private static String city = 成都;/靜態變量o public static void setCity(String c)/靜態方法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 西南財經大學 前一頁 課間休息 回目錄 static的典型應用oclass demooprivate static int count = 0;opublic demo()ocount+;oSystem.out.println(產生了+count+個對象!);ooopublic class classdemo20opublic static void main(String args)on

24、ew demo();onew demo();onew demo();oooo常用來計數西南財經大學 前一頁 課間休息 回目錄靜態方法(類方法)class Sumint x,y,z;/成員變量static int getContinueSum(int start,int end)/設置靜態方法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);/調用靜態方法System.out.println(result);西南財經大學 前一頁 課間休息 回目錄對象數組o定義:就是指一組相關對象的集合,用數組來描述。o格式類 對象數組名 = new 類數組長度 例如西南財經大學 前一頁 課間休息 回目錄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;/定義對象數組ooSystem.out.println(_);ofor(int i = 0; i stu.length;i+)oSystem.out.print(stui+ );ooSystem.out.println();o/給每個數組元素賦值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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論