Java-继承问题。访问最初在super()上实例化的对象数组上的子类方法

时间:2014-06-05 00:54:29

标签: java arrays inheritance subclass

我正在学习java课程并且在理解继承方面遇到了一些麻烦。 我不是要求你们为我做任何编码,但指出我正确的方向会有很长的路要走。 (不会让我使用家庭作业或功课标签,但我想提前做我的要求)

基本上我正在编写一个名为Account的银行应用程序,它作为两个子类的超级构造函数,称为Checking和Savings。

我的理解是,如果我实例化一个Account对象的数组,那么我可以调用子类(它反过来调用超类构造函数的参数有一些微小差异)并使用new命令将它分配给某个位置对象数组。

我的问题是访问子类中的某些方法。编译器仍将对象数组视为Account,但我希望它能够访问属于Checking或Savings子类的方法。

我的问题是如何让帐户成为一个更好的抽象课程?或者是否可以在Account类和子类中声明一个方法'如果我调用Account方法,它是否能够区分轮流调用哪个子类方法?

我试图避免在可能的情况下将类型转换用于子类,并尝试将Account子类保持为通用并尽可能封装。

任何帮助将不胜感激。如果你需要参考,我可以写伪代码,但我宁愿自己做所有的编码。

1 个答案:

答案 0 :(得分:1)

如果要在Account类中声明具有完整正文或属性/实例变量的可重用函数,请将其设为抽象类。如果只有契约(或者需要由子类实现的方法),请将其设为接口。通过使用接口,我能想到的最大优势是测试可以模拟行为(合同)的地方,或者将来扩展其他类。扩展类后,您不能再从另一个类扩展(不允许多重继承)。

在任何一种情况下,您都无法实例化基类。