我正在尝试为我的某个程序实现ADT,并且我无法正确实现它而无错误地使用。以下是我正在使用的一些示例代码:
//JavaApplication
package javaApplication;
import someADT.*;
public class JavaApplication {
public JavaApplication () {
abstractType a = new typeFor("Hello"); //Err1
}
public abstract class typeFor implements abstractType { //Err2
public abstractType typeFor (String s) {
//some code
}
}
public static void main(String[] args) {
JavaApplication j = new JavaApplication();
}
}
以下是访问者方法列表。
//abstractType implementation
package someADT;
public interface abstractType {
public abstractType doSomethingA();
public abstractType doSomethingB(abstractType a);
public int doSomethingC(abstractType a);
}
我不完全确定如何实现应该显而易见的抽象类型。我已经评论了上面的一些错误,其中包括:
Err1 = is abstract and cannot be instantiated
Err2 = attempting to assign weaker access privileges
我对此非常陌生,但我找不到有关如何正确执行此操作的可靠文档。我有演讲幻灯片,但我承认他们是相当准确的。我确实使用了提供的示例,只是交换了我自己的东西,但保留了一般语法,我得到了这些错误。
我的实施有什么问题?
答案 0 :(得分:2)
抽象类不能扩展INTERFACE。它只能实现它。无法实例化接口。它只能由其他类实现或由其他接口扩展。
答案 1 :(得分:2)
你在这里缺少一些东西:
答案 2 :(得分:0)
您可以通过执行以下操作来改进代码:
public class JavaApplication {
public JavaApplication () {
abstractType a = (new typeFor()).typeFor("HELLO"); //Err1
}
public class typeFor implements abstractType { //Err2
public abstractType typeFor (String s) {
return null;
}
@Override
public abstractType doSomethingA() {
// TODO Auto-generated method stub
return null;
}
@Override
public abstractType doSomethingB(abstractType a) {
// TODO Auto-generated method stub
return null;
}
@Override
public int doSomethingC(abstractType a) {
// TODO Auto-generated method stub
return 0;
}
}
public static void main(String[] args) {
JavaApplication j = new JavaApplication();
}
}