---------------------- asp.net+android+ios開發、.net培訓、期待與您交流! ----------------------
1、多型
定義:可以理解為事物存在的多種體現形態。
例如:動物中貓,狗。
貓這個物件對應的型別是貓型別
貓 x = new 貓();
同時貓也是動物中的一種,也可以把貓成為動物。
動物 y = new 貓();
動物是毛和夠具體事物中抽取出來的父型別
父型別引用只想了子類物件。
1.多型的體現
父類的引用指向了自己的子類物件。父類的引用也可以接收自己的子類物件。
2.多型的前提
必須是類與類之間有關係,要麼是繼承,要麼是實現。
通常還有乙個前提:存在覆蓋。
3.多型的好處
多型的出現大大的提高了程式的擴充套件性。
4.多型的弊端:
提高了擴充套件性,但是只能使用父類的引用訪問父類中的成員。
5.多型的應用
6.多型的出現**中的特點(多型使用的注意事項)。
//需求:動物,貓狗
abstract class animal
class cat extends animal
public void catchmouse() }
class dog extends animal
public void kanjia() }
class pig extends animal
public void gongdi()
}
class duotaidemo
public static void function(animal a)//提高**擴充套件性
else if(a instanceof dog)
}/* public static void function(cat c)
public static void function(dog d)
public static void function(pig p)
*/}
基礎班的學生:
學習,睡覺
高階版的學生:
學習,睡覺
可以將這兩類事物進行抽取
abstract class student
}class basestudent extends student
public void sleep() }
class advstudent extends student
}class dostudent
}class duotaidemo2
}
class fu
void method_2() }
class zi extends fu
void method_3() }
class duotaidemo3
}
在多型中(非靜態)成員函式的特點:
在編譯時期:參閱引用型所屬的類中是否有呼叫的方法,如果有,編譯通過,如果沒有,編譯失敗。
在執行時期:參閱物件所屬的類中是否有呼叫的方法。
簡單總結就是:成員函式在多型呼叫時,編譯看左邊,執行看右邊。
在多型中,(靜態)成員變數的特點:
無論編譯和執行,都參考左邊(引用型變數所屬的類)。
//需求:電腦執行例項,電腦執行基於主機板。
inte***ce pci
class mainboard
public void usepci(pci p)//pci p = new netcard()//介面型引用指向自己的子類物件。 }
}class netcard implements pci
public void close() }
class soundcard implements pci
public void close() }
/*class mainboard
public void usenetcard(netcard c) }
class netcard
public void close() }
*/class duotaidemo4
}
2、多型的擴充套件示例
需求:資料庫的操作。資料時:使用者資訊。
1.連線資料庫:jdbc hibernate
2.運算元據庫。
crud c:create r:read u:update d:delete
3.關閉資料庫連線。
inte***ce userinfodao //dao:data access object
class userinfobyhibernate implements userinfodao
public void delete(user user) }
class userinfobyjdbc implements userinfodao//dao-> data access object
public void delete(user user) }
class dboperate
}
通過建立inte***ce介面,可以降低程式之間的耦合性。
3、object類
object:是所有物件的直接或者間接父類,傳說中的上帝。
該類中定義的肯定是所有物件都具備的功能。
object類中已經提供了對物件是否相同的比較方法。
如果自定義類中也有比較相同的功能,沒有必要重新定義。
只要演戲父類中的功能,建立自己特有比較內容即可,這就是覆蓋。
class demo//extends object
public boolean equals(object obj)//object obj = new demo();向下轉型
public string tostring()
//在描述類的時候,都需要有乙個tostring()的方法來進行複寫(覆蓋)操作,方便建立乙個字串比較方式或者特有內容
/* public boolean compare(demo d)
*/}class person
class objectdemo
}
小結:
(1)boolean equals(object boj):指示其他某個物件是否與此物件「相等」。
(2)string tostring():返回該物件的字串表示,所有物件都有屬於自己的雜湊值。
(3)getclass():返回此object執行時的類
----------------------
asp.net+android+ios開發、
.net培訓、期待與您交流! ----------------------
詳細請檢視:
黑馬程式設計師 物件導向
物件導向 1 物件導向 是基於面向過程的一種思想。面向過程 以函式為基礎,關注實現過程。物件導向 以物件為基礎,關注實現結果。2 物件導向的思想特點 a 是一種更符合人們思考習慣的思想。b 把複雜的事情簡單化了。c 把我們從執行者變成了指揮者。舉例 買電腦。洗衣,做飯。旅遊。把大象裝進冰箱。體現 c...
黑馬程式設計師 物件導向
物件導向是一種思想,把複雜事物簡單化,把面向過程的執行者變成了指揮者。過程其實就是函式,而物件將函式和一些內容封裝。把事物的屬性和行為封裝成物件,再把物件抽象成類。類的訪問修飾符有public和final。而成員的修飾符有public private protected static 成員變數和區域...
黑馬程式設計師 java物件導向問題分析
張老師課堂的案例 1.人在黑板上畫圓。三個物件人,黑板,圓。畫圓的動作屬於哪個物件上的方法?圓提供畫圓需要圓心和半徑。所以方法需要寫在圓物件裡 2.列車司機剎車。剎車的動作屬於誰的方法?列車司機是方法的施令者,剎車的具體操作屬於列車內部的行為。所以剎車方法屬於列車。3.售貨員統計票據金額。統計在售貨...