我们可以在抽象类中使用静态方法吗?
在Java编程中,我们可以调用抽象类的静态方法吗?
是的,我知道我们不能在抽象类的方法中使用静态。但我想知道为什么。?
在Java编程中,我们可以调用抽象类的静态方法吗?
是的,我知道我们不能在抽象类的方法中使用静态。但我想知道为什么。?
在Java中,您可以在抽象类中有一个静态方法:
abstract class Foo {
static void bar() { }
}
这是允许的,因为可以直接调用该方法,即使您没有抽象类的实例:
Foo.bar();
但是,出于同样的原因,不能将静态方法声明为抽象方法。通常,编译器可以保证抽象方法在调用时具有真正的实现,因为您无法创建抽象类的实例。但是,由于静态方法可以直接调用,因此将其抽象化将使调用未定义的方法成为可能。
abstract class Foo {
abstract static void bar();
}
// Calling a method with no body!
Foo.bar();
在接口中,所有方法都是隐式抽象的。这就是接口无法声明静态方法的原因。(接口不能具有静态方法的体系结构原因没有,但我怀疑JLS的作者认为这会鼓励滥用接口)
如果你正在谈论java,答案是肯定的,但你需要定义静态方法。不能创建抽象的静态方法。您可以创建的是非抽象静态方法。
原因是您不需要对象实例来访问静态方法,因此您需要使用特定功能定义该方法。
所以你不能有,
abstract class AbstractClassExample{
abstract static void method();
}
但你可以有,
abstract class AbstractClassExample{
static void method(){}
}
希望这有帮助...