H,初学者。
我有一个名为'Command'的抽象类,它有几个扩展它的子类,所有这些都是命令,并使用'Command'中的变量和一些方法。在一个单独的类(不扩展Command)中,有一些代码可以在用户这样做时调用这几个类。 Command类有一些我想在单独的类中读取的变量(使用getter方法)。
public abstract class Command {
private String variableName;
public String getCurrentVariableName() {
return variableName;
}
}
public class SeperateClass {
// rest of code
System.out.println(command.getCurrentVariableName());
}
创建类的对象不起作用,因为我无法实例化抽象类。我猜我可以实例化一个子类并使用super返回它,但除非没有别的办法,否则我不想这样做。
请帮忙
由于
答案 0 :(得分:6)
您尝试以静态方式调用实例方法,并且由于该方法不是静态的,因此不起作用。你必须
即,
public class SeperateClass {
// rest of code
public void someMethod() {
Command myCommand = new ConcreteCommand();
System.out.println(myCommand.getCurrentVariableName());
}
}
好奇,但为什么Command抽象开始?
修改强>
您在下面的评论中说明:
你能提供一个可以帮我这么做的链接吗?
我认为你需要为我们的问题提供更多背景知识,但是对于一般性的审查,你可以在这里了解更多关于抽象类的内容:Abstract Methods and Classes Tutorial
编辑2
您在评论中说明:
如果删除摘要,则表示Command类不是抽象的错误
您可能以错误的方式修复错误。通常,此类错误的最佳解决方案是修复编译器抱怨的问题,而不是使类抽象化。例如,这个错误通常出现在声明为实现接口的类中,如果忽略为该类提供接口声明的所有方法,编译器将给出此错误消息。在这种情况下,你不应该使类抽象,而应该给它必要的方法。
您需要告诉我们有关此错误的详细信息。