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
提交
取消
