interface TestInterface
{
public static void square(int a)
{
System.out.println("Square is "+a*a);
}
public static void show()
{
System.out.println("Default Method Executed");
}
}
class TestClass implements TestInterface
{
public void square(int a)
{
System.out.println(a*a);
}
public void show()
{
System.out.println("Overridden Method");
}
public static void main(String args[])
{
TestClass d=new TestClass();
d.square(4);
TestInterface.square(4);
TestInterface.show();
d.show();
}
}
我对我的代码有疑问。我了解到静态方法在JAVA中不能被覆盖,但它在这里似乎工作得很好。 当我同时给出默认关键字和静态关键字时,就像这样
interface TestInterface
{
default static void square(int a)
{
System.out.println("Square is "+a*a);
}
public static void show()
{
System.out.println("Default Method Executed");
}
}
出现如下错误: 修饰符的非法组合:静态和默认
JAVA 将此视为错误的原因是什么?
最佳答案
静态
方法意味着在没有相关类/接口(interface)实例的情况下调用。通常它们是实用方法。
default
方法旨在在相关接口(interface)的实例上调用。该接口(interface)的所有实现都将具有该方法定义,除非它被重写。
这两个术语不允许一起使用的原因很简单,因为它们相互矛盾:default
需要一个对象,static
不需要对象。
关于java - Java 接口(interface)中的静态方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45385858/