我已经发布过一次有关此计划的帖子,但我再次坚持我正在学习的新概念(也作为旁注;我是CS学生所以请不要简单地交给我一个解决方案,对于我的大学有严格的代码复制规则,谢谢。)。我对这个概念有一些困难,主要的是我很难实现它的目的,尽管教科书的例子很有意义。所以只是快速解释我正在做的事情:
我有一个实体类,它从驱动程序中获取Scanner
。然后我的另一个班级将扫描仪移交给superclass
,然后其两个subclasses
继承该扫描仪。每个类都有与{。{}}读取的.txt不同的数据。然后这三个类将其数据发送给实体进行最终计算。在读完所有数据之后,这就是我的问题所在。我有一个方法,显示一个新的输出以及一些方法,从Scanner
及其派生类添加数据.EDIT:我根本无法弄清楚如何通过超级调用我的子类的实例变量我可以添加和计算数据。
以下是我的四个班级; Driver,Entity,Super,Subs:
super
另外,它可能很容易告诉我在这里仍然相当新,因为我只是用代码示例将所有类一起运行,我无法想出添加间隙,所以如果需要可以随意编辑是
答案 0 :(得分:1)
您正在描述的场景类型中instanceof的典型用法是
if (foo instanceof FooSubclass) {
FooSubclass fooSub = (FooSubclass) foo;
//foo and fooSub now are references to the same object, and you can use fooSub to call methods on the subclass
} else if (foo instanceof OtherSubclass) {
OtherSubclass otherSub = (OtherSubclass) foo;
//you can now use otherSub to call subclass-specific methods on foo
}
这被称为"铸造"或者"明确地铸造" foo到FooSubclass。
答案 1 :(得分:1)
调用子类方法的概念称为多态。 在运行时,只要方法名称相同,就会调用最具体的可用方法。
所以你可以
Superclass class = new Subclass();
class.method();
并且提供了覆盖Superclass中的方法的方法,即使它是在Subclass中定义的。
对不起我的英语,我希望有所帮助; - )