我有一个超级动物,由猫,狗和狮子扩展.这三个都有一个String sound表示声音的字段.方法playSound(int i,String s)播放声音s,i次数.是否可以在Animal超类中使用一个通用方法来接受调用它的子类的字段?或者我是否必须在每个使用自己的"声音"变量调用super的类中创建一个单独的重写方法?
超类无法访问子类中的字段.这里通常的做法是制作一个抽象的getter:
protected abstract Sound getSound();
public void playSound(int times) {
for(int i=0; i<times; i++) {
getSound().play();
}
}
Run Code Online (Sandbox Code Playgroud)