Java 重写 多态性_java多态性重写overriding和重载overloading的区别
一、概述
就Java而言,當(dāng)有人問(wèn):
什么是多態(tài)?
將重載或重寫(xiě)的區(qū)別解釋為一個(gè)可以接受的答案?
如果您有一個(gè)抽象基類(lèi),它定義了一個(gè)沒(méi)有實(shí)現(xiàn)的方法,并且您在子類(lèi)中定義了該方法,那該方法是否仍然覆蓋?
我認(rèn)為重載不是正確答案。
二、詳解
表達(dá)多態(tài)性的最清晰方法是通過(guò)抽象基類(lèi)(或接口)
public abstract class Human{
...
public abstract void goPee();
}
此類(lèi)是抽象的,因?yàn)樵揼oPee()方法無(wú)法為人類(lèi)定義。只有男性和女性子類(lèi)別才可以定義。同樣,人類(lèi)是一個(gè)抽象的概念—您不能創(chuàng)造既不是男性也不是女性的人類(lèi)。它必須是另一個(gè)。
因此,我們通過(guò)使用抽象類(lèi)推遲實(shí)現(xiàn)。
public class Male extends Human{
...
@Override
public void goPee(){
System.out.println("Stand Up");
}
}
和
public class Female extends Human{
...
@Override
public void goPee(){
System.out.println("Sit Down");
}
}
現(xiàn)在我們可以告訴所有“人”執(zhí)行g(shù)opee方法。
public static void main(String[] args){
ArrayList group = new ArrayList();
group.add(new Male());
group.add(new Female());
// ... add more...
// tell the class to take a pee break
for (Human person : group) person.goPee();
}
運(yùn)行此將產(chǎn)生:
Stand Up
Sit Down
...
多態(tài)性是指不止一種形式,同一對(duì)象根據(jù)需要執(zhí)行不同的操作。
多態(tài)可以通過(guò)兩種方式實(shí)現(xiàn),即
方法覆蓋
方法重載
方法重載是指使用相同的方法名稱(chēng)在同一類(lèi)中編寫(xiě)兩個(gè)或多個(gè)方法,但是傳遞的參數(shù)不同。
方法覆蓋意味著我們?cè)诓煌念?lèi)中使用方法名稱(chēng),這意味著在子類(lèi)中使用父類(lèi)方法。
在Java中,為了實(shí)現(xiàn)多態(tài)性,超類(lèi)引用變量可以保存子類(lèi)對(duì)象。
為了實(shí)現(xiàn)多態(tài),每個(gè)開(kāi)發(fā)人員必須在項(xiàng)目中使用相同的方法名稱(chēng)。
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的Java 重写 多态性_java多态性重写overriding和重载overloading的区别的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: excel溢出怎么解决? excel文字
- 下一篇: java class类型参数_使用Cla