2017-06-08 64 views
-1

是什么在Java 8这个代码之间的区别:Java静态方法VS功能

此:

public class Hello { 
    public static void sayHello() { 
     System.out.println("ghasedak.Hello !!!"); 
    } 
} 

这:

public interface Hello { 
    public static void sayHello() { 
     System.out.println("ghasedak.Hello !!!"); 
    } 
} 

这是主类:

public class MainClass { 
    public static void main(String[] args) { 
      Hello.sayHello(); //for function 
      Hello.sayHello(); //for class 
    } 
} 
+1

确定,即Java允许在接口方法的实现? –

+1

你的第二个实现根本不会编译。 –

+0

区别在于一个方法在一个类中,另一个方法在一个接口中。类/接口基本上只是一种名称空间,方法可以访问该名称空间内的任何内容(即其他静态方法或字段)。 – Thomas

回答

0

在Java 8中,您现在可以defi ne接口中的方法。所以技术上他们是一样的。与接口的区别仍然是你不能实例化它们。所以你只能使用它们中的方法。

这里是链接:https://en.wikipedia.org/wiki/Interface_(Java)

这充分说明了接口如何在Java 8

现在交互。在你的代码,它仍然应该叫Hello类方法在接口类方法,因为正如我所说的接口不能实例化。

0

这两者之间没有区别。

第一个示例显示了在类中实现的静态方法,而第二个示例显示了在接口中实现的静态方法。如果您使用JDK 7或更低版​​本,第二个示例不会编译,因为正如其他人已经说过的那样,接口中的静态方法支持仅在Java 8中添加。Here是一个非常有用的StackOverflow文章,它解释了为什么支持静态方法和默认方法在接口中添加了Java 8。

您是否希望将静态方法(可能是实用程序方法)保留在类或接口中,这取决于具体情况。例如。如果你想添加一个新的通用方法到一组没有扩展公共基类但实现了通用接口的类中。由于没有公共基类,因此可以将常用方法添加到接口中。

0

我觉得我们有两个区别:
1)接口只能有一个函数。
2)重要:接口不是类,所以没有阻止静态:当你调用类

public class Hello { 
    static { 
     System.out.println("Ok"); 
    } 
    public static void sayHello() { 
     System.out.println("ghasedak.Hello !!!"); 
    } 
} 

此块运行:
鉴于此代码。
你不能在功能接口上做到这一点。 (intefaces没有这个块)
抱歉坏英语