知識點:多型的概述、多型的擴充套件性、多型的轉型、多型成員特點、obejec類-equals()、object類-tostring()
多型定義:某一類事物存的多種存在形態。
*例:動物中的貓、狗
*貓這個物件對應的型別是貓型別
*貓 x = new 貓();
*同時貓也是動物中的一種,也可以把貓稱為動物
*動物 y = new 貓();
*動物是貓和狗具體事物中抽取出來的父型別
*父型別引用指向了子類物件
體現*父類或者介面的引用指向或者接受自己的子類物件
作用*多型的存在提高了程式的擴充套件性和後期維護性
前提*需要存在繼承或者實現關係
例(驗證是否存在關係)
class a extends b{}
b b = new a();
if(b instanceof a)
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)//animal a = new cat();
/*public static void function(cat c)//
public static void function(dog d)
public static void function(pig p)*/}
多型的特點
*成員函式
*編譯時:要檢視引用變數所屬的類中是否有所呼叫的成員
*在執行時:要檢視物件所屬的類中是否有所呼叫的成員
編譯時的型別由宣告該變數時使用的型別決定
,執行時的型別由實際賦給變數的物件決定。
如果編譯時型別和執行時型別不同,就出現多型。
成員變數
*只看引用變數所屬的類
向上轉型(子類→父類):(自動完成)
父類名稱 父類物件 = 子類例項 ;
向下轉型(父類→子類):(強制完成)
子類名稱 子類物件 = (子類名稱)父類例項 ;
物件名 instanceof 類
判斷指定的變數名此時引用的真正型別是不是當前給出的類或子類;
/*
,多型的出現**中的特點(多型使用的注意事項)
第二個問題:如何使用子類特有方法。
*//*
動物,貓,狗。
*/class cat extends animal
public void catchmouse() }
class dog extends animal
public void kanjia() }
class pig extends animal
public void gongdi() }
//-----------------------------------------
class duotaidemo2
public static void function(animal a)//animal a = new cat();
else
*/if(a instanceof cat)
else if(a instanceof dog)
/*instanceof : 用於判斷物件的型別。 物件 intanceof 型別(類型別 介面型別)
*/ }
}
class fu
void method2()
static void method4() }
class zi extends fu
void method3()
static void method4() }
class duotaidemo4
}
電腦執行例項
/*
需求:電腦執行例項,
電腦執行基於主機板。
*/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 duotaidemo5
}
obejec類-equals()、object類-tostring()
所有類的公共父類,一旦乙個類沒有顯示地繼承乙個類則其直接父類一定是object。
一切資料型別都可用object接收
class ooxx extends object{}等價於class ooxx {}
常見方法
public boolean equals(object obj):物件比較
public int hashcode():取得該物件的hash碼
public string tostring():物件描述
object類的 tostring()方法:「物件的描述」
建議所有類都覆寫此方法
直接列印輸出物件時,會呼叫該物件的tostring()方法。//可以不寫出來
列印物件的時候,實際呼叫的物件實際指向的類的自我描述;
全限定類名+@+十六進製制的hashcode值,等價於
全限定類名+@+integertohexstring(該物件.hashcode)
equals也是判斷是否指向同乙個物件
沒有實際意義,有必要可以重寫
public boolean equals(object obj) {}
string 覆寫了 object的equals方法:只比較字元的序列是否相同
==用於判斷兩個變數是否相等
基本型別:
引用型別:必須指向同乙個物件,才true
只能比較有父子或平級關係的兩個物件
newstring("1") == new string("1"); ?
/*
object:是所有物件的直接後者間接父類,傳說中的上帝。
該類中定義的肯定是所有物件都具備的功能。
object類中已經提供了對物件是否相同的比較方法。
如果自定義類中也有比較相同的功能,沒有必要重新定義。
只要沿襲父類中的功能,建立自己特有比較內容即可。這就是覆蓋。
*/class demo //extends object
public boolean equals(object obj)//object obj = new demo();
/* public boolean compare(demo d)
*/public string tostring() }
class person
class objectdemo
}
java學習筆記day8
多型 定義 某一類事物的多種存在形式。例 動物中貓,狗。貓這個物件對應的型別是貓型別。貓 x new 貓 同時貓也是動物中的一種,也可以把貓稱為動物。動物 y new 貓 動物是貓和狗具體事物中抽取出來的父型別。父型別引用指向了子類物件。多型 可以理解為事物存在的多種體現形態。人 男人,女人。動物 ...
自學前端day 8
在html檔案的裡寫 href style.css 寫上css檔案的路徑 自己走過的坑 外聯不起作用時,檢查你呼叫的css相對路徑是否正確!1 aaa.aa 表示從 根目錄開始,即 根目錄下的aaa.aa檔案 2 aaa.aa 表示本目錄下的aaa.aa 3 aaa.aa 表示上一級目錄中的aaa....
Day8 類的繼承
觀察兩個類的成員組成 提取相同的屬性和方法 寵物是父類,狗和金魚是子類。子類具有父類的屬性和方法。是使用已存在的類作為基礎建立新類的技術。單一繼承 只有乙個父類。父類可以叫做基類 超類。子類可以叫做派生類。子類可以繼承父類中的成員 屬性和方法 但是需要注意 1.private的成員不能繼承 2.子類...