java中重載,繼承,重寫和多態(tài)的區(qū)別
重載,繼承,重寫和多態(tài)的區(qū)別:
1)繼承是子類獲得父類的成員。
2)重寫是繼承后重新實(shí)現(xiàn)父類的方法。
3)重載是在一個(gè)類里一系列參數(shù)不同名字相同的方法。
4)多態(tài)則是為了避免在父類里大量重載引起代碼臃腫且難于維護(hù)。
網(wǎng)上看到一個(gè)有趣的說(shuō)法是:繼承是子類使用父類的方法,而多態(tài)則是父類使用子類的方法。
下面的例子包含了這四種實(shí)現(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.”);
}
}
紅色是重載,綠色是重寫,藍(lán)色是繼承,粉紅是多態(tài)
注意Triangle類的方法是重寫,而Rectangle類的方法是重載。
比較紅色的和粉紅的部分就可以發(fā)現(xiàn)多態(tài)對(duì)重載的優(yōu)點(diǎn):如果用重載,則在父類里要對(duì)應(yīng)每一個(gè)子類都重載一個(gè)取得邊數(shù)的方法;如果用多態(tài),則父類只提供取得邊數(shù)的接口,至于取得哪個(gè)形狀的邊數(shù),怎樣取得,在子類里各自實(shí)現(xiàn)(重寫)。
相關(guān)文章
淺析Spring Boot中的spring-boot-load模塊
spring-boot-loader模塊允許我們使用java -jar archive.jar運(yùn)行包含嵌套依賴jar的jar或者war文件,它提供了三種類啟動(dòng)器。下面通過(guò)本文給大家介紹spring-boot-load模塊的相關(guān)知識(shí),感興趣的朋友一起看看吧2018-01-01Spring Cloud Gateway 使用JWT工具類做用戶登錄校驗(yàn)功能
這篇文章主要介紹了Spring Cloud Gateway 使用JWT工具類做用戶登錄校驗(yàn)的示例代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01Java中ShardingSphere 數(shù)據(jù)分片的實(shí)現(xiàn)
其實(shí)很多人對(duì)分庫(kù)分表多少都有點(diǎn)恐懼,我們今天用ShardingSphere 給大家演示數(shù)據(jù)分片,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09Java定義棧結(jié)構(gòu),并實(shí)現(xiàn)入棧、出棧操作完整示例
這篇文章主要介紹了Java定義棧結(jié)構(gòu),并實(shí)現(xiàn)入棧、出棧操作,結(jié)合完整實(shí)例形式分析了java數(shù)據(jù)結(jié)構(gòu)中棧的定義、以及入棧、出棧、棧是否為空判斷、棧大小計(jì)算、打印棧元素等相關(guān)操作技巧,需要的朋友可以參考下2020-02-02Logback 使用TurboFilter實(shí)現(xiàn)日志級(jí)別等內(nèi)容的動(dòng)態(tài)修改操作
這篇文章主要介紹了Logback 使用TurboFilter實(shí)現(xiàn)日志級(jí)別等內(nèi)容的動(dòng)態(tài)修改操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08Spring?Boot實(shí)現(xiàn)分布式任務(wù)調(diào)度的步驟
Spring?Boot提供了一些工具和框架,可以幫助我們輕松地實(shí)現(xiàn)分布式任務(wù)調(diào)度,在本文中我們將介紹如何使用Spring?Boot、Spring?Cloud、Quartz和Redis來(lái)實(shí)現(xiàn)分布式任務(wù)調(diào)度,感興趣的朋友跟隨小編一起看看吧2023-06-06