2

我们可以在不使用关键字“实现”的情况下使用接口的变量和方法吗?

注意:接口和类在同一个包中。

提前致谢..!!!

4

3 回答 3

10
  • 一个接口的所有变量都是public static final默认的,可以直接使用
  • 您可以通过匿名类实现接口(不使用implements关键字)

    public static void main(String[] args) throws Exception{
       System.out.println(I.s); // accessing Interface I's variable
       I i = new I() {
    
        @Override
        public int getS() {
            return 10;
        }
       };
       System.out.println(i.getS()); // accessing I's method
    }
    
    
    interface I {
    
       String s = "test";
    
       int getS();
    }
    
于 2013-07-19T12:46:59.637 回答
2

您可以public static final将接口的变量用作类中的常量定义,而无需实现接口。

如果不在子类中实现这些方法,使用方法将毫无用处,因为接口只声明public隐式抽象的方法。您将如何处理没有任何实现的方法定义?

接口实际上是契约定义,任何实现接口的类都遵守契约。

您可以通过创建匿名类来实现没有关键字的接口。但是再次通过该类实现接口。implements

PS:请尝试这样做以确保接口可以使用 abstract 关键字声明方法,尽管它是多余的。

interface A {
    public abstract void method();
}
于 2013-07-19T12:45:30.273 回答
2

接口是类要履行的契约。如果没有类实现它,那么您可能误用了接口。

正如所指出的,您可以访问静态成员变量,但我仍然质疑这种设计的必要性!

于 2013-07-19T12:47:23.323 回答