物件導向思想的特點
物件導向的特點
開發的過程:其實就是不斷的建立物件,使用物件,指揮物件做事情
(2)儲存空間
(3)初始化值
class person
} // result 20
同下面的道理:
person(string name)
person(string name, int age)
person p1 = new person("lisi", 20);
person p2 = new person("wangwu");
person()
(2)特點:不定義空引數的建構函式,系統會自動給乙個空參構造。定義了建構函式無論是有參還空參的,系統就不再給空引數的了
(3)過載建構函式:根據引數列表來區分是哪個建構函式
a:person()
b:person(int age, string name)
c:person(int age)
d:person(string name, int age)
什麼時候使用static
(2)生命週期
(3)所屬不同
舉例:定義乙個非靜態的屬性,和乙個靜態屬性,再定義乙個靜態方法和非靜態方法對屬性進行輸出
class fu
class zi extends fu } 總結:在乙個類中如果方法中的區域性變數和方法外的成員變數重名
,那麼如果在方法內輸出這變數
,就是方法自己的變數裡的值
,想要區分要用
this,
加上this.
就是輸出成員變數的值
在子父類中如果出現成員變數重名的時候
,在子類輸出會輸出自己的變數裡的值
,想要區分要用
super,
加上super.
就是輸出父類裡變數的值
this
和super
的區分:
**this
代表本類物件的引用
super
本類物件父類的引用。
**this
可以用於區分區域性變數和成員變數同名的情況。
super
可以用於區分子類和父類成員變數同名的情況。
**一般,子類中不會出現和父類同名的成員變數。面試可能問到。
class fu public void method() {} } class zi extends fu }子類中存在和父類成員方法同名的這種現象,叫做重寫,複寫,覆蓋。
重寫(override)
和過載(overload)
的區別:
過載的特點:
**在同一類中。
**方法名相同,引數列表不同。
重寫的特點:
**要有繼承關係。在子父類中
**方法的宣告相同。
(方法名和引數列表都相同
) ***
覆蓋時,子類方法許可權一定要大於等於父類方法許可權
父類的許可權不能是私有的
***靜態只能覆蓋靜態。
class fu fu(int age) } class zi extends fu zi(int age) } zi z = new zi(); zi z = new zi(30);總結:子類中所有的構造方法預設都會訪問父類中空引數的構造方法。
**因為每乙個構造方法的第一行都有一條預設的語句
super();
當父類中沒有空引數的構造方法時,子類的建構函式必須通過
this
或者super
語句指定要訪問的構造方法。或者手動提供無參構造方法。
this(...):
呼叫本類中的構造方法
super(...):
呼叫父類中的構造方法
構造方法用於建立物件,並進行初始化
.建議如果你寫了有參的建構函式
,也要把空參的建構函式再手動加上
否則你定義了有參的建構函式
,空參的系統就不會再給了
你這樣建立物件的時候就會報錯
person p = new person();//
這句話是會去找空參的建構函式
class person person(int age) person(int age,string name) } //person p =new person(); //
系統預設給出無參構造
//當你手動給出構造方法後,系統就不會再給出缺省的空的構造方法。
手動無引數,如果你想給屬性賦值或者做一些初始化,無參你別刪不就行了嗎。
class demo public void setname(string name) public string getname() }
物件多型的前提
多型中成員的特點:
(我們只研究特殊的,就是說名字一樣的東西
) fu f = new zi(); a
:成員變數:編譯和執行都看fu。
b:非靜態方法:編譯看
fu,執行看zi。
c:靜態方法:編譯和執行都看fu。
舉例:動物的例子:
向上轉型
animal a = new cat(); a.eat(); // a.catchmouse();
向下轉型
cat c = (cat) a;
c.eat();
c.catchmouse();
animal dog = new dog();
// 向上轉型
cat c = (cat)dog;
// 向下轉型
轉換異常
dog d = (dog)dog;
總結:無論是向上轉型還是向下轉型
,變化的都是子類物件
,絕對不能把父類物件強轉為子類型別
四 物件導向 繼承
繼承 一 什麼是繼承 概念 父親有的東西,並且允許繼承,所有孩子就都會有 乙個父類可以擁有多個子類 乙個子類只能擁有乙個父類 二 父子之間的轉換 子類可以轉換成父類,這個父類只能轉換成之前的子類 子類可繼承父類,父類可代表子類 兄弟之間不可繼承。namespace 繼承 namespace 繼承 p...
scale教程(四)物件導向
1.今天來講下scala中的物件導向 2.定義類和指定構造方法。定義乙個person類 帶有三個引數 class person fn string,ln string,s person println i am testing code def introduction string else ob...
Python學習之路四 物件導向
物件 object 可以看做是資料 特性 以及由一系列可以訪問 操作這些資料的方法所組成的集合。主要有以下特點 封裝 主要是乙個隱藏了各種細節的集合,只公開 單元的對外介面 繼承 就像人類遺傳繼承,孩子會繼承父母的特點,但也可以擁有屬於自己的特點 多型 意味著可以對不同類的物件使用同樣的操作。前兩個...