【发布时间】:2018-08-18 03:39:29
【问题描述】:
我将在这里举一个例子。 我知道 Thor Class 中的那些方法将覆盖 Avengers Class 中的方法。 (我将跳过方法的主体)
Class Avengers{
void hit(){
}
void walk(){
}
}
Class Thor extends Avengers{
void hit(){
}
void walk(){
}
void thunderSkill(){
}
}
这里是主要的。
public static void main(String[] args) {
Avengers thor = new Thor();
}
如果我这样做,使用“thor”实例,我可以访问那些 hit() 方法和 walk() 方法。但我无法访问 ThunderSkill() 方法。我意识到只能访问覆盖方法。我的问题是,有没有什么方法可以在不覆盖 Parent 类、Avengers 类中的 ThunderSkill 的情况下访问 ThunderSkill 方法?
所以如果它有其他英雄,比如雷神、钢铁侠、美国队长......等等,他们 都应该有自己独特的方法。如果我想通过实例访问它,这些所有独特的方法是否需要在父类 Avengers 类中? (我正在尝试将实例的数据类型设置为“复仇者联盟”,这样我就可以轻松处理“参数”和“参数”。)
我是Java新手,请帮助我:)
谢谢你们!!
【问题讨论】:
-
为什么
Avengers类会知道thunderSkill?并非所有Avengers都有thunderSkill。也许Avengers都有一个specialAttack()或者他们的hit()方法有时可能会在条件合适时调用this.thunderSkill()之类的东西(if (this.weapon.getName() == "StormBreaker") { this.thunderSkill(); } else { this.punch(); }) -
if(thor instanceof Avengers) ((Avengers)thor).thunderSkill();
标签: java object inheritance instance