use*_*805 0 java methods class abstract
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());
}
Run Code Online (Sandbox Code Playgroud)
创建类的对象不起作用,因为我无法实例化抽象类.我猜我可以实例化一个子类并使用super返回它,但我不想,除非没有其他方法.
请帮忙
谢谢
您试图以静态方式调用实例方法,并且由于该方法不是静态的,因此不起作用.你必须
即
public class SeperateClass {
// rest of code
public void someMethod() {
Command myCommand = new ConcreteCommand();
System.out.println(myCommand.getCurrentVariableName());
}
}
Run Code Online (Sandbox Code Playgroud)
只是好奇,但为什么Command抽象开始?
编辑
您在下面的评论中说明:
你能提供一个帮助我这样做的链接吗?
您需要为我们的问题提供更多背景信息,但是对于一般性审核,您可以在此处了解有关抽象类的更多信息:抽象方法和类教程
编辑2
您在评论中说明:
如果我删除摘要,则错误表明Command类不是抽象的
您可能以错误的方式修复错误.通常,此类错误的最佳解决方案是修复编译器抱怨的问题,而不是使类抽象化.例如,这个错误通常出现在声明为实现接口的类中,如果忽略为该类提供接口声明的所有方法,编译器将给出此错误消息.在这种情况下,你不应该使类抽象,而应该给它必要的方法.
您需要告诉我们有关此错误的更多详细信息.