亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

多態的問題

public class Demo {

? ? public static void main(String[] args){

? ? ? ? Master ma = new Master();

? ? ? ? ma.feed(new Animal(), new Food());

? ? ? ? ma.feed(new Cat(), new Bone());

? ? ? ? ma.feed(new Dog(), new Fish());

? ? }

}

class Animal{

? ? public void eat(Food f){

? ? ? ? System.out.println("我是一個小動物,正在吃" + f.getFood());

? ? }

}

class Cat extends Animal{

? ? public void eat(Food f){

? ? ? ? System.out.println("我是一只小貓咪,正在吃" + f.getFood());

? ? }

}

class Dog extends Animal{

? ? public void eat(Food f){

? ? ? ? System.out.println("我是一只狗狗,正在吃" + f.getFood());

? ? }

}

class Food{

? ? public String getFood(){

? ? ? ? return "事物";

? ? }

}

class Fish extends Food{

? ? public String getFood(){

? ? ? ? return "魚";

? ? }

}

class Bone extends Food{

? ? public String getFood(){

? ? ? ? return "骨頭";

? ? }

}

class Master{

? ? public void feed(Animal an, Food f){

? ? ? ? an.eat(f);

? ? }

}


正在回答

2 回答

Cat,Dog繼承于Animal,可以使用Animal類型的變量來引用Cat和Dog的對象,Food類似。以ma.feed(new Cat(), new Bone());為例,feed(Animal an, Food f),an是Animal類型的變量,引用了Cat的對象,即可以使用Cat對象中所有從Animal繼承的方法,而an實際引用的是Cat而不是Animal,所以調用方法時調用的就是Cat中的方法。Food的情況類似。

1 回復 有任何疑惑可以回復我~
#1

慕瓜7080925 提問者

非常感謝!
2016-07-24 回復 有任何疑惑可以回復我~
#2

Smile丶微冷 回復 慕瓜7080925 提問者

不客氣~
2016-07-24 回復 有任何疑惑可以回復我~

有誰能解釋一下怎么實現的

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Java入門第二季 升級版
  • 參與學習       531142    人
  • 解答問題       6326    個

課程升級!以終為始告別枯燥,在開發和重構中體會Java面向對象編程的奧妙

進入課程

多態的問題

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號