一:軟體出現的目的 1:用電腦的語言描述現實世界 2:用電腦解決現實世界的問題 編程思維: 使用面向對象的思想(描述)面向對象的世界 (符合人類的思維習慣) 二:面向對象設計和開發程式的好處 1:符合人類的思維習慣 2:交流更加流暢 2:可維護性高(方便修改代碼) 3: 提高設計和開發效率 三: ...
一:軟體出現的目的
1:用電腦的語言描述現實世界
2:用電腦解決現實世界的問題
編程思維: 使用面向對象的思想(描述)面向對象的世界 (符合人類的思維習慣)
二:面向對象設計和開發程式的好處
1:符合人類的思維習慣
2:交流更加流暢
2:可維護性高(方便修改代碼)
3: 提高設計和開發效率
三:面向對象的三大特性
1、封裝性: 所謂封裝,也就是把客觀事物封裝成抽象的類,並且類可以把自己的數據和方法只讓可信的類或者對象操作,對不可信的進行信息隱藏。封裝是面向對象的特征之一,是對象和類概念的主要特性。 簡單的說,一個類就是一個封裝了數據以及操作這些數據的代碼的邏輯實體。在一個對象內部,某些代碼或某些數據可以是私有的,不能被外界訪問。通過這種方式,對象對內部數據提供了不同級別的保護,以防止程式中無關的部分意外的改變或錯誤的使用了對象的私有部分。 2、繼承性所謂繼承是指可以讓某個類型的對象獲得另一個類型的對象的屬性的方法。它支持按級分類的概念。繼承是指這樣一種能力:它可以使用現有類的所有功能,併在無需重新編寫原來的類的情況下對這些功能進行擴展。 通過繼承創建的新類稱為“子類”或“派生類”,被繼承的類稱為“基類”、“父類”或“超類”。繼承的過程,就是從一般到特殊的過程。要實現繼承,可以通過“繼承”(Inheritance)和“組合”(Composition)來實現。繼承概念的實現方式有二類:實現繼承與介面繼承。實現繼承是指直接使用基類的屬性和方法而無需額外編碼的能力;介面繼承是指僅使用屬性和方法的名稱、但是子類必須提供實現的能力; 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修飾屬性(變數)時,則該屬性為常量,其固定值不變,該值無法修改
【示例】