[英]Java - Different methods in superclass and subclass
我對Java / Android中的繼承/接口有點困惑,不確定我是否走對了。 基本上,我在Android中使用的是Parcelable,並且由於方法未定義而出現錯誤。
我有一個動物超類,還有幾個子類(狗,貓等)。 在第一個活動中,選擇一個動物,然后將其打包並將其傳遞給第二個活動:
/* Second activity */
Animal myAnimal;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_current_status);
Intent intent = getIntent();
myAnimal = intent.getParcelableExtra("animal"); // Gets the animal subclass (dog, cat etc) from the previous activity
myAnimal.updateImage(myAnimal.getCurrentState());
}
問題是“ updateImage”僅存在於子類中,因此不會在此處編譯。 我不希望這種方法屬於超類,因為輸出會根據動物的類型(例如狗的圖片)而變化。
我也不知道它將是哪種動物,所以我不能將變量定義為頂部的“動物”以外的任何東西。 我確實嘗試將變量定義為所有子類都實現的接口,這確實使'updateImage'可用,但是后來在超類中找不到方法,因為它沒有實現此特定接口。
希望這是有道理的,任何有關我應如何解決此問題的建議將不勝感激。
我不希望此方法屬於超類,因為輸出會根據動物的類型而有所不同
這可以。 在超類中將其定義為抽象方法,然后需要每個子類來實現它。
public abstract class Animal {
public void abstract updateImage();
}
public class Dog extends Animal {
public void updateImage() {
// Do dog-specific stuff here
}
}
public class Cat extends Animal {
public void updateImage() {
// Do cat-specific stuff here
}
}
注意,由於您沒有提供有關從getCurrentState返回的類型的信息,因此我沒有將state參數添加到updateImage方法。
該鏈接將對您有所幫助: http : //www.java-made-easy.com/java-inheritance.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.