**方法過載:**發生在同乙個類中,出現的方法名相同,引數列表不同的情況!與返回值型別(構造方法沒有返回值型別)和訪問修飾符無關!
**方法重寫:**發生在子類和父類之間,當子類繼承了父類的方法資訊
之後,如果覺得不夠強大,可以進行優化、重寫!方法名相同。引數列表也相同,返回值型別相同或者為其子類,訪問修飾符不能嚴於父類!
註解@override 為了幫助你檢驗是否是方法重寫![推薦]
比較項位置
方法名參數列
返回值訪問修飾符
方法重寫
子類相同
相同相同或是其子類
不能比父類更嚴格
方法過載
同類相同
不相同無關
無關超級類、祖宗類!
你定義的每個類其實都直接或間接繼承自object類。
!(f:\新建資料夾\截圖\截圖\繼承 (2).png)
[面試題]equals和==的區別?
我們重寫的equals:
public
class
student
// alt+shift+s -> h
@override
public
boolean
equals
(object obj)
elseif(
!name.
equals
(other.name)
)return
false
;return
true
;}
多型:多種形態。父類的引用指向子類的物件。
/**
* 主人類
* @author charles
* */
public
class
master
public void feedtiger(tiger tiger) */
// 多型:父類的引用/宣告 指向了子類的物件
// 多型應用1.父類的引用可以作為方法的形參
// pet pet = new pet();
// pet pet = new monkey();
// pet pet = new tiger();
public
void
feedpet
(pet pet)
else
if(pet instanceof
tiger)}
/*public monkey getmonkey()
public tiger gettiger() */
// 多型應用2.父類的引用可以作為方法的返回值型別
public pet getpet
(int choice)
else
if(choice ==2)
return null;
}}
instanceof(…的物件/例項):用來判定是否是某個型別的物件。
string str1 = "***";
str1(物件) instanceof string(型別)
表示判斷str1是否是字串型別
型別轉換。
自動型別轉換
強制型別轉換
pet pet = new monkey(); // 自動型別轉換 向上轉型
// 父類的引用無法呼叫子類的特有特徵 所以需要強轉
monkey mon = (monkey)pet; // 強制型別轉換 向下轉型
一般配合instanceof進行轉型!
if(pet instanceof monkey){
monkey mon = (monkey)pet;
物件導向三大特性之一 多型
多型 普通版本 對於同乙個方法,由於呼叫的物件不同 或者傳入的物件不同 最終實現了不同的結果 定義電腦類 class computer 在電腦類中定義乙個 sub 的規範的介面 方法 def usb self,obj obj.start 定義滑鼠類 class mouse def start sel...
php物件導向三大特性之一多型
1.抽象類是乙個特殊的方法,介面是特殊的抽象類,多型就是使用抽象類和介面 2.是物件導向設計的重要特性,它展現了動態繫結的功能,也稱為 同名異式 多型的功能可以讓軟體在開發和維護時,達到充分的延伸性。事實上,多型最直接的定義就是讓具有繼承關係的不同類物件,可以以相同名稱的成員函式呼叫,產生不同的反應...
物件導向三大特性之一 多型(C )
目錄 多型的定義及實現 抽象類多型的原理 單繼承和多繼承關係的虛函式表 1 什麼是多型?當不同的物件去完成某個行為時,會產生出不同的結果。多型是 不同繼承關係的類物件去呼叫同一函式時,產生了不同的行為。例如 student類繼承了person類。person物件買票全價,student物件買票半價。...