黑馬程式設計師 Java物件導向 day08

2021-06-18 01:47:40 字數 3565 閱讀 1413

---------------------- 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.售貨員統計票據金額。統計在售貨...