- 此问题在此处已有答案**:
How to call same method from two different classes in java(3个答案)
昨天关门了。
我有3个类-employee
、partTime
(扩展雇员)和bill
。所有类都有一个名为issueCheque()
的函数。
我有一个对象数组,我想调用每个对象的issueCheque()
函数,这就是我正在做的。
Object[] arr = {employee obj,partTime obj, bill obj};
for(Object obj:arr) {
obj.issueCheque();
}
但是这不起作用。我理解错误信息,但是我不知道怎么才能解决这个问题。
- 错误**
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method issueCheque() is undefined for the type Object
at main.main(main.java:16)
3条答案
按热度按时间ujv3wf0j1#
你现在所做的将需要很多
instanceof
检查,你的例子中是2个,在真实的情况中可能更多。最好引入一个由类实现的接口。
让所有可以发行支票的类都实现这个接口,现在就可以使用
ChequeIssuer
的集合,而不是Object
。不需要类型检查或强制转换。
另外,请看一下What does it mean to "program to an interface"?,这是一个很好的阅读主题。
lnxxn5zx2#
在这里,您需要通过选中
instanceOf
来强制转换Object注意:您的代码与Java编码标准完全不同步。请对此进行深入了解。
avwztpqn3#
Object[]可以包含任何Object。即使在您的情况下,您只有实现issueCheque()方法的类的示例,但编译器无法保证这一点,因此它会拒绝。
你可以定义一个定义方法的接口,并让你的每个类型实现这个接口。然后你可以创建一个接口类型的数组/列表,它接受实现它的任何类型。
举个例子...
假设我们有其他类型
PartTime
和Bill
也实现了这些方法,我们可以使用接口作为公共类型将它们组合到集合/数组中。