苦苦于实现抽象数据类型

时间:2014-03-08 19:23:35

标签: java abstract-data-type

我正在尝试为我的某个程序实现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

我对此非常陌生,但我找不到有关如何正确执行此操作的可靠文档。我有演讲幻灯片,但我承认他们是相当准确的。我确实使用了提供的示例,只是交换了我自己的东西,但保留了一般语法,我得到了这些错误。

我的实施有什么问题?

3 个答案:

答案 0 :(得分:2)

抽象类不能扩展INTERFACE。它只能实现它。无法实例化接口。它只能由其他类实现或由其他接口扩展。

答案 1 :(得分:2)

你在这里缺少一些东西:

  1. 您无法在Java中实例化抽象类
  2. 非抽象类应该实现它从超类/接口继承的所有抽象方法
  3. 构造函数不能有返回类型

答案 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();
    }
}