一:軟件出現的目的編程
1:用計算機的語言描述現實世界this
2:用計算機解決現實世界的問題編碼
編程思惟: 使用面向對象的思想(描述)面向對象的世界 (符合人類的思惟習慣)spa
二:面向對象設計和開發程序的好處設計
1:符合人類的思惟習慣code
2:交流更加流暢對象
2:可維護性高(方便修改代碼)blog
3: 提升設計和開發效率繼承
三:面向對象的三大特性接口
四:從現實中抽象出類分三步:
1. 找出它的種類 2. 找出它的屬性 3. 找出它的行爲
在編程中的應用:
1:找出名詞肯定類、屬性 eg: (肯定類) class Dog{} (肯定屬性)String name="小黑"; String Strain="拉布拉多"
2:找出動詞肯定方法 eg:(進食方法) public void eat (){ //省略代碼 }
3:剔除與業務無關的屬性和方法
五:實現封裝的步驟
1:畫類圖:
類圖的做用:1:用於分析和設計「類」
2:直觀,容易理解
2:封裝的概念:
封裝:將類的某些信息隱藏在類內部,不容許外部程序直接訪問,而是經過該類提供的方法來實現對隱藏信息的操做和訪問
3:編寫代碼實現封裝
1:修改屬性的可見性 (設爲private)
2:建立公有的getter/setter方法 (用於屬性的讀寫)
3:在getter/setter方法中加入屬性控制語句 (對屬性值的合法性進行判斷)
【代碼示例】
1 public class Dog { 2 private String name;//暱稱 3 private int health;//健康值 4 private int love;//親密度 5 private String strain;//品種 6 7 public Dog() { 8 } 9 10 public String getName(){ 11 return name; 12 } 13 public void setName(String name){ 14 this.name=name; 15 } 16 public int getHealth(){ 17 return health; 18 } 19 public void setHealth(int health){ 20 if(health>100||health<0){ 21 this.health=40; 22 System.out.println("健康值應該在0到100之間,默認值是40"); 23 }else{ 24 this.health=health; 25 } 26 } 27 public int getLove(){ 28 return love; 29 } 30 public void setLove(int love){ 31 this.love=love; 32 } 33 public String getStrain(){ 34 return strain; 35 } 36 public void setStrain(String strain){ 37 this.strain=strain; 38 } 39 public void print(){ 40 System.out.println("寵物的自白"); 41 System.out.println("個人名字叫"+name+",健康值是"+health+",和主人的親密度是"+love+",我是一隻"+strain); 42 } 44 }
4:封裝的好處:
(1):隱藏類的實現細節
(2):只能經過規定方法訪問數據
(3):方便加入控制語句
(4):方便修改實現
六:訪問成員變量及方法
1:static的做用:
(1)static 能夠用來修飾屬性,方法和代碼塊,稱爲靜態變量,靜態方法和靜態代碼塊
(2)由static 修飾的屬性和方法,能夠直接經過類名.屬性 或 類名.方法來進行調用
(3)由static 修飾的代碼塊,在運行時,程序默認自動調用,且優先於構造方法和普通方法;若類中有多個代碼塊,則按照靜態代碼塊順序依次執行
2:final的做用:
(1)final 可修飾類,屬性,和方法
(2)當final 修飾一個類時,該類成爲最終類,沒法被繼承。簡稱爲「斷子絕孫類」。
(3)當使用final修飾方法時,這個方法將成爲最終方法,沒法被子類重寫。可是,該方法仍然能夠被繼承。
(4)當final修飾屬性(變量)時,則該屬性爲常量,其固定值不變,該值沒法修改
【示例】