3 回答
已采納

望遠
TA貢獻1017條經驗 獲得超1032個贊
多態分為靜態多態--在運行前就已經確定要執行的代碼塊,體現在代碼中就是方法的重載;
public?class?Test{ ????public?void?say(){ ????System.out.println("Hello?World"); ????} ????public?void?say(String?s){ ????System.out.println(s); ????} ????public?static?void?main(String[]?args){ ????????new?Test().say();//在運行前確定了要執行的代碼塊 ????????//new?Test().say("Hello?World"); ????} }
動態多態--在運行前無法確定要執行的代碼塊具體是什么,體現在代碼中就是接口回調和父類對象引用指向子類對象
public?class?Animal{ ????public?void?say(){ ????System.out.println("動物會叫"); ????} } class?Dog?extends?Animal{ ????public?void?say(){ ????????System.out.println("汪汪汪~~"); ????} } class?Snake?extends?Animal{ ????public?void?say(){ ????????System.out.println("嘶嘶嘶~~"); ????} } class?Test{ ????public?void?test(Animal?animal){ ????????????animal.say(); ????????} ????public?static?void?main(){ ????????new?Test().test(new?Animal());//輸出動物會叫 ????????//new?Test().test(new?Dog());//多態,輸出汪汪汪 ????????//new?Test().test(new?Snake());//多態,輸出嘶嘶嘶 ????} }
添加回答
舉報
0/150
提交
取消