Java静态方法与函数

时间:2017-06-08 14:05:01

标签: java function oop

java 8中的这些代码有什么区别:

这:

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
    } 
}

3 个答案:

答案 0 :(得分:0)

在Java 8中,您现在可以在接口中定义方法。从技术上讲,它们是一样的。与接口的差异仍然是你无法实例化它们。所以你只能使用它们中的方法。

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

它讲述了Java 8中接口现在如何交互。

在你的代码中,它仍然应该通过接口类方法调用Hello类方法,因为我说接口不能被实例化。

答案 1 :(得分:0)

两者之间没有区别。

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

是否要在类或接口中保留静态方法(可能是实用方法)的选择取决于具体情况。例如。如果要将一个新的公共方法添加到一组不扩展公共基类但实现公共接口的类中。您可以将常用方法添加到接口,因为没有公共基类。

答案 2 :(得分:0)

我认为我们有两点不同:
1)接口只能有一个功能 2)重要:界面不是类,所以没有阻止静态:
查看此代码:

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

当你打电话给这个街区时 你不能在功能界面上这样做。 (接口没有这个块)
抱歉英语不好

相关问题