封裝
•是指隱藏物件的屬性和實現細節,僅對外提供公共訪問方式。
好處:•隱藏實現細節,提供公共的訪問方式
•提高了**的復用性
•提高安全性。
封裝原則:
•將不需要對外提供的內容都隱藏起來。
•把屬性隱藏,提供公共方法對其訪問。
比如如下乙個person類
class person
public person(string name, int age)
//重寫tostring方法
public string tostring()
//提供公共的訪問方式get/set方法
public string getname()
public void setname(string name)
public int getage()
public void setage(int age)
}
繼承 繼承的由來:
當很多類有重複的屬性或者方法,那麼我們就把重複的部分抽取出來,封裝為乙個類,讓很多類來繼承這個單獨的類,重複的部分就不用寫了.
繼承的格式:
class b extends a
class c extends a
繼承的特點:
1.單繼承
2.多層繼承 --構成了繼承體系
如果描述這個體系,共性的屬性或者功能,看頂層
如果使用這個體系的屬性和功能,使用 最低層
繼承的注意事項:
1.父類中private修飾的成員,子類不能使用.
private只能本類訪問
2.父類中構造方法,子類不能使用
構造方法名字跟類名一致
3.不要為了部分的功能去繼承
產品經理管程式設計師叫爹(不合適)
繼承實現了類與類的關係
類中:成員變數:
變數名字不同:父類有的子類可以直接用
變數名字相同:子類使用的時候自己的
子類還想使用父類的成員,怎麼辦? 使用super
super.成員 表示的是父類的成員
this 和super的區別:
this:當前物件的引用 (建立物件)
super:父類儲存空間的標識 (理解為父類的引用)
區域性變數 成員變數 父類成員變數 使用順序?
區域性變數:num =10;
成員變數: this.成員
父類成員: super.成員
就近原則去找
構造方法:不能繼承,但是我們可以呼叫父類的構造方法
子類的構造方法預設呼叫 父類的無參構造.
因為構造方法是給類初始化資料的,子類如果想使用父類的成員變數的值,那麼必須用父類的先構造初始化.
注意事項:
1.父類中的成員變數被private修飾了,還得對外提供乙個公共的訪問方式.構造方法就是public的,那麼子類想構造,就可以直接呼叫父類的構造方法了!
2.父類中沒有無參構造
方式一:使用super中的有參構造
方式二:使用this中的有參構造,前提是有參構造也得訪問到父類super有參構造中
3. super和this 必須在第一行,並且只能有乙個
成員方法 : 都是可以被繼承的
get()/set()
show()/ call()
如果子類中寫了跟父類同名的方法,子類方法覆蓋父類方法,這叫方法重寫.
重寫和過載的區別:
重寫:子類和父類,方法宣告一模一樣,子類覆蓋父類方法
過載:本類中,方法名一樣,引數列表不同
重寫的應用:
子類可以增強父類的方法,通過 super.父類方法名增強.
關鍵字:
final:被final修飾的東西,不能被改變.
可以修飾類 變數 方法
多型某乙個事物,在不同時刻表現出來的不同狀態。
舉例:貓可以是貓的型別。貓 m = new 貓();
同時貓也是動物的一種,也可以把貓稱為動物。
動物 d = new 貓();
多型前提和體現
有繼承關係
有方法重寫
有父類引用指向子類物件
成員訪問特點
成員變數
編譯看左邊,執行看左邊
成員方法
編譯看左邊,執行看右邊
靜態方法
編譯看左邊,執行看左邊
所以前面說靜態方法不能算方法的重寫
多型的好處
提高了程式的維護性(由繼承保證)
提高了程式的擴充套件性(由多型保證)
多型的弊端
不能訪問子類特有功能
可以將型別強制轉換為子類型別,然後使用子類方法
**演示
class animaltest
}class animal
public static void sleep()
}class cat extends animal
public static void sleep()
}
黑馬程式設計師 物件導向(三)
1 多型概念 定義 某一類事物的多種表現形式。可以理解為事物存在的多種體現形態。2 多型 擴充套件性 多型的體現 父類的引用指向了自己的子類物件。父類的引用也可以接受自己的子類物件。如 father father new sun 多型的好處 多型的出現大大的提高了程式的擴充套件性。多型的前提 必須是...
黑馬程式設計師 物件導向
物件導向 1 物件導向 是基於面向過程的一種思想。面向過程 以函式為基礎,關注實現過程。物件導向 以物件為基礎,關注實現結果。2 物件導向的思想特點 a 是一種更符合人們思考習慣的思想。b 把複雜的事情簡單化了。c 把我們從執行者變成了指揮者。舉例 買電腦。洗衣,做飯。旅遊。把大象裝進冰箱。體現 c...
黑馬程式設計師 物件導向
物件導向是一種思想,把複雜事物簡單化,把面向過程的執行者變成了指揮者。過程其實就是函式,而物件將函式和一些內容封裝。把事物的屬性和行為封裝成物件,再把物件抽象成類。類的訪問修飾符有public和final。而成員的修飾符有public private protected static 成員變數和區域...