【发布时间】:2020-04-20 14:31:23
【问题描述】:
我正在尝试创建一个程序来帮助我学习 Java 的继承。然而,在这个过程中,我发现我以为我学到的东西有问题。
程序很简单。我有一个名为 Gun 的超类和一个名为 M1911 的子类。这个程序的想法只是向我表明你不必重复我做的那种叫做shoot()的方法。然而,问题就在这里。我想让shoot() 向控制台打印一条消息,说
"GunModel: Pew, pew!"
。 GunModel 和shoot() 在 Gun 和 M1911 子类中定义为具有与从 Gun 继承的初始值不同的值。这意味着如果 M1911 有一个 GunModel == "M1911",shoot() 方法将通过打印来反映这一点
"M1911: Pew, pew!"
这一切(显然?)都不起作用,因为在我看来,内部子类的值对继承的方法没有影响。那么,如果是真的,为什么会这样。另外,我缺少的继承目标是什么?这似乎不仅仅是避免重复。
编辑:这是我应该先给出的代码。
public class Gun {
protected String GunModel;
public void shoot() {
System.out.println(GunModel + ": Pew, pew!");
}
}
public class M1911 extends Gun {
public String GunModel = "M1911";
}
【问题讨论】:
-
感谢您详细解释您要达到的目标。你能包括你试过的代码吗?否则很难知道你哪里出错了。谢谢!
-
如果你的拍摄方法定义为 getGunModel() + "Pew, pew!" 它应该可以工作。你有一个由 M1911 或其他实现的抽象 getGunModel 方法
-
嗨,我的第一篇文章很抱歉。即使我很小心,也一定会犯一些错误!
-
Gun.java... public class Gun { protected String GunModel; public void shoot() { System.out.println(GunModel + ": Pew, pew!"); } } M1911.java.... 公共类 M1911 扩展 Gun { public GunModel = "M1911"; } “编辑,抱歉没有格式化,对这一切真的很陌生”。
-
Java 字段不能被覆盖,但方法可以。对 GunModel 字段使用吸气剂。此外,您可能想编辑您的问题,而不是将所有代码放在评论中
标签: java oop inheritance subclass