没有实现关键字,我们可以使用接口吗?

3

不使用“Implements”关键字,我们能否使用接口的变量和方法?

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

提前感谢!!!


1
你能举个例子说明你的意思吗? - arshajii
考虑到接口没有实现,使用接口的方法会非常困难... - cfs
也许已经是Java 8了...你可以在那里使用静态方法 :P - Vlasec
3个回答

11
  • 默认情况下,接口的所有变量都是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();
}

实现关键字是否不需要访问接口变量? - NarutoUzumaki
完全没有问题..你可以通过使用语句 I.v 来使用一个接口 I 的变量 v - sanbhat
1
那么在接口中声明方法有什么用处呢? - NarutoUzumaki
接口的方法定义了契约.. 在这里阅读更多关于它们的信息:http://en.wikipedia.org/wiki/Interface_(Java) - sanbhat

2
您可以在类中使用接口的public static final变量作为常量定义,而无需实现该接口。
如果子类没有实现接口中声明的public方法,则使用这些方法将是无用的,因为接口只声明了隐式抽象的方法。如果没有任何实现,您会如何处理仅有的方法定义?
接口实际上是合同定义,实现接口的任何类都遵守合同。
您可以通过创建匿名类来实现接口,而不需要关键字implements。但是,您仍然是通过该类实现接口。
附言:请尝试此操作以确保接口可以声明带有抽象关键字的方法,即使它是多余的。
interface A {
    public abstract void method();
}

1
接口无法定义“抽象”方法,只有抽象类可以。 - cfs
@cfs 不,每个接口方法都是隐式的“抽象”。 - arshajii
我想我的意思是在接口中不能使用abstract关键字来修饰方法,至少据我所知。 - cfs
@arshajii 我不知道... Java 是一种奇怪的东西 :) - cfs
实现关键字是否不需要访问接口变量? - NarutoUzumaki

2

接口是一个类要履行的契约。如果没有类实现它,那么你可能在错误地使用接口。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接