关于接口的一般问题

时间:2011-06-09 07:52:09

标签: java interface

我知道,这是一个愚蠢的问题,但是有人告诉我,我们可以在界面中编写代码,我的意思是不是逻辑而是System.out.println(),在界面中..

这是真的吗?

8 个答案:

答案 0 :(得分:3)

不,在界面中你只声明方法(名称,参数)

答案 1 :(得分:3)

接口可以只有公共抽象方法和公共静态最终字段(常量)。它们不能具有:构造函数,静态块,块,非抽象方法,非公共方法,非静态最终字段。如果没有为字段键入public static final,或者为方法键入public,则编译器会为您添加它们。

答案 2 :(得分:2)

接口是简单的合同。

您只能拥有public方法声明和publicstaticfinal字段 没有别的

答案 3 :(得分:2)

这是一个代码示例,您可以从界面中打印出一些东西,但它是糟糕的做法,我知道没有用例,它只是Java的困惑:

public interface NewClass {

   HashMap x = new HashMap() {{
       System.err.println("print me");         
   }};

}

public class Test implements NewClass{

    public static void main(String[] args) {
        x.clear();
    }
}

(所使用的课程根本没有其他含义)

答案 4 :(得分:2)

有一件事已被遗忘,一个接口可以有静态类和接口,例如;

public interface MyInterface {
      public static class Holder {};
}

修改

JLS声明,

  

接口可能包含成员类型   声明(第8.5节)。会员类型   接口中的声明是   隐含地静态和公开。

答案 5 :(得分:0)

这在界面中是不可能的。您可以声明可实现的方法或最终的静态常量。但定义常数并不是一种好的做法。

答案 6 :(得分:0)

接口纯粹是抽象类,只有最终变量,只有抽象方法,并且它没有任何构造函数。所以在一个接口中,你只能添加只有抽象方法和最终变量的方法声明。

答案 7 :(得分:0)

是的,你可以:

public interface DoStuff {
    public class Worker {
        public void work() {
            System.out.println("Hi there!");
        }
    }
}

import DoStuff.Worker;

public class Main {

    public static void main(String[] args) {
        Worker worker = new Worker();
        worker.work();
    }
}

如果您运行Main,它将输出“Hi there!”

这是一个非常人为的例子,但在技术上是可行的。