如果我的术语不正确,我很抱歉,我在6周前才开始使用Java(以及一般的OO编程)。
家庭作业给了我一个接口类:
public interface Example {
void Function();
//etc
}
然后我有几个“实现”接口类的类,例如:
public class myExample1 implements Example {
void Function(){ stuff;}
public void myExclusiveFunction() { stuff;}
...
}
在myExample1
类中,我定义了Example
中的函数,但也为myExample1
类添加了一些特定的函数。
在我的主程序中,我创建了一个LinkedList<Example> eList = new LinkedList<Example>
。在链接列表中,我存储了多种类型的示例(myExample1,myExample2等)。我想做点什么:
eList.get(i).myExclusiveFunction();
然而,这不起作用。编译器告诉我:
对于Example类型,未定义myExclusiveFunction()方法。
我该如何使用此功能?我真的想让LinkedList能够保存任何Example子类的对象,并且我在一个赋值限制下不编辑Example接口。
答案 0 :(得分:2)
你有两个选择:
1 - 将您的LinkedList更改为存储myExample1
而不是Example
。
LinkedList<myExample1> eList
2 - 使用instanceof
并将类强制转换为类型myExample1
(凌乱)。
Example exObj = eList.get(i);
if (exObj instance of myExample1) {
((myExample1)exObj).myExclusiveFunction();
}
答案 1 :(得分:1)
您需要了解Java中的转换。您的工作不起作用,因为myExclusiveFunction()仅存在于Example中而不存在于myExample1中(您可能希望在此处遵循正确的Java命名约定)
当您从列表eList.get(i)中获取项目时,您将获得Example作为返回类型而不是myExample1。要使用myExclusiveFunction(),您需要先将类型从Example转换为myExample1。在Google中搜索“Java中的类型转换”或“转换运算符”
答案 2 :(得分:1)
放 里面的myExclusiveFunction逻辑 功能()。
您只能调用界面中的函数,如函数