Java-超类和子类中的不同方法
我对Java/Android中的继承/接口有点困惑,不确定我是否走上了正确的道路。基本上,我在Android中使用Parcelable,并且由于方法未定义而出现错误 我有一个动物超类和一些子类(狗、猫等)。在第一个活动中,您选择一只动物,然后它将其打包并传递给第二个活动:Java-超类和子类中的不同方法,java,android,inheritance,Java,Android,Inheritance,我对Java/Android中的继承/接口有点困惑,不确定我是否走上了正确的道路。基本上,我在Android中使用Parcelable,并且由于方法未定义而出现错误 我有一个动物超类和一些子类(狗、猫等)。在第一个活动中,您选择一只动物,然后它将其打包并传递给第二个活动: /* Second activity */ Animal myAnimal; @Override protected void onCreate(Bundle savedInstanceState) { super.
/* 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
}
}
注意,我没有将state参数添加到updateImage方法中,因为您没有提供从getCurrentState返回的类型的信息
此链接将有助于:使用updateImage方法抽象声明动物类抽象,并在子类中实现它。您可以找到一些有用的内容请添加您的父类和一个子类。和错误日志。