java - 如何调用抽象类的非静态方法

标签 java abstract-class

我如何调用抽象类的非静态方法,而不使用其子类或扩展它,因为抽象类和子类太复杂,所以我不想造成任何副作用。

例如,可以使用类名和点运算符来调用抽象类的具体静态方法,而无需创建子类。类似的是有什么方法可以调用非静态方法。

我只想运行一个方法,不想运行任何其他代码。我尝试使用反射,但它需要实例

最佳答案

抽象类是抽象,这意味着您无法创建该类的实例。

因此,您无法调用抽象类的实例方法

public abstract class Foo {
   static void bar();
   void foobar();
}

您可以调用 Foo.bar(),因为它不是实例方法(意味着它不需要类的实例),但您不能调用 foobar() 因为你不能执行 new Foo().foobar().

Foo.bar(); // OK, we don't need an instance.

Foo foo = new Foo(); // Not OK - we cannot instantiate an abstract class.
foo.foobar();
<小时/>

有关创建抽象类实例而不必使用派生类的方法,请参阅 ernest_k's answer利用匿名类

关于java - 如何调用抽象类的非静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51648365/

相关文章:

java - 可以修改sql中的唯一约束吗?

java - PrintWriter 写入 CSV - 新行不起作用?

Java从config.yml中获取Maps的List of maps

c++ - 抽象类中的嵌套类

c# - 为什么要使用接口(interface)和抽象而不是抽象?

java - 如何将事件发送到 PCF 中应用程序的所有实例

c# - C# 中是否有类似 Java 的 throws 关键字?

c# - 如何确定哪个继承类正在使用抽象类的方法

objective-c - 在 Objective-C 中创建一个抽象类

python - Python中的抽象属性