java中重載,繼承,重寫和多態(tài)的區(qū)別
重載,繼承,重寫和多態(tài)的區(qū)別:
1)繼承是子類獲得父類的成員。
2)重寫是繼承后重新實現(xiàn)父類的方法。
3)重載是在一個類里一系列參數(shù)不同名字相同的方法。
4)多態(tài)則是為了避免在父類里大量重載引起代碼臃腫且難于維護。
網(wǎng)上看到一個有趣的說法是:繼承是子類使用父類的方法,而多態(tài)則是父類使用子類的方法。
下面的例子包含了這四種實現(xiàn):
class Triangle extends Shape {
public int getSides() {
return 3;
}
}
class Rectangle extends Shape {
public int getSides(int i) {
return i;
}
}
public class Shape {
public boolean isSharp(){
return true;
}
public int getSides(){
return 0 ;
}
public int getSides(Triangle tri){
return 3 ;
}
public int getSides(Rectangle rec){
return 4 ;
}
public static void main(String[] args) {
Triangle tri = new Triangle();
System.out.println(“Triangle is a type of sharp? ” + tri.isSharp());
Shape shape = new Triangle();
System.out.println(“My shape has ” + shape.getSides() + ” sides.”);
}
}
紅色是重載,綠色是重寫,藍色是繼承,粉紅是多態(tài)
注意Triangle類的方法是重寫,而Rectangle類的方法是重載。
比較紅色的和粉紅的部分就可以發(fā)現(xiàn)多態(tài)對重載的優(yōu)點:如果用重載,則在父類里要對應(yīng)每一個子類都重載一個取得邊數(shù)的方法;如果用多態(tài),則父類只提供取得邊數(shù)的接口,至于取得哪個形狀的邊數(shù),怎樣取得,在子類里各自實現(xiàn)(重寫)。
相關(guān)文章
淺談Java中ThreadLocal內(nèi)存泄露的原因及處理方式
內(nèi)存泄漏就是我們申請了內(nèi)存,但是該內(nèi)存一直無法釋放,就會導(dǎo)致內(nèi)存溢出問題,本文詳細的介紹了ThreadLocal內(nèi)存泄露的原因及處理方式,感興趣的可以了解一下2023-05-05

