
在这篇博文中,通过实例了解java9接口的私有方法和静态方法。Java发布了很多版本。这篇博文是关于接口如何从公共修改器演变为私有修改器,以及抽象方法只演变为非抽象方法。
java7接口声明版本示例
在java7版本之前,接口只有constants 和abstract 方法。例子是:
- 公共静态最终变量即常量
- 公共抽象方法--没有带方法头的实现。
public interface MyInterface {
public String message = "Hello";
public void getMessage();
}
在上面的接口例子中,我们定义了一个constant 和一个abstract 方法。
方法没有实现。该方法只有声明,即称为抽象。
如果你想拥有一个非抽象的方法,那么我们可以选择一个带有抽象方法的抽象类。
java8接口默认和静态方法的例子
在Java8版本中,接口引入了一些特性。
公共Default 方法和公共Static 方法可以在接口内声明。
因此,我们可以向一个接口声明以下方法。
- 公共静态最终变量
- 公共抽象方法
- 公共默认方法
- 公共静态方法
下面是一个例子
public interface MyInterface {
public String CONSTANT = "constant";
public void abstractMethod();
// default method example
public default void defaultMethod() {
System.out.println("defaultMethod");
}
// static method example
public static void staticMethod() {
System.out.println("staticMethod");
}
}
public class TestInterface implements MyInterface{
public static void main(String[] args) {
TestInterface t=new TestInterface();
t.abstractMethod();
t.defaultMethod();
MyInterface.staticMethod();
}
@Override
public void abstractMethod() {
System.out.println("abstractMethod");
}
}
输出
abstractMethod
defaultMethod
staticMethod
Default methods 可以被重写,并使用实现类的 。
instance 不能被重写,并使用接口名称调用。
Java9接口的私有和静态方法示例
在java9版本中,你可以在一个interfaces 中添加私有方法和私有静态方法。
例如,你在接口中的许多default 方法中写了一段普通的代码。冗余的代码不是一种好的设计方式。所以我们要把多余的代码移到private 方法中,以实现可重用性。然而,Private 方法允许重复使用接口中的代码。
实现类将可以访问这些private 方法和以下功能:
- 公共静态最终变量
- 公共抽象方法
- 公共默认方法
- 公共静态方法
- 私有方法
- 私有静态方法
下面是一个java9私有静态接口方法的例子
public interface MyInterface {
public String CONSTANT = "constant";
public void abstractMethod();
// default method example
public default void defaultMethod() {
privateMethod();
privateStaticMethod();
System.out.println("defaultMethod");
}
// static method example
public static void staticMethod() {
System.out.println("staticMethod");
}
// private method example
private void privateMethod() {
System.out.println("privateMethod");
}
// private static method example
private static void privateStaticMethod() {
System.out.println("privateStaticMethod");
}
}
public class TestInterface implements MyInterface{
public static void main(String[] args) {
TestInterface t=new TestInterface();
t.abstractMethod();
t.defaultMethod();
MyInterface.staticMethod();
}
@Override
public void abstractMethod() {
System.out.println("abstractMethod");
}
}
而上述代码执行的输出结果是
abstractMethod
privateMethod
privateStaticMethod
defaultMethod
staticMethod
修饰符'private'不允许在这里出现错误,在版本8或更低的版本中会被抛出。
私有和静态方法的接口特点
- 这些方法有一个
private关键字来表示它们是一个私有方法 private方法包括大括号内的主体- 抽象关键字不适用于这些方法,因为没有私有和抽象关键字适用于方法,因为两者的功能是相反的。
Private方法的可访问性是在它被声明的interface。private Static方法可以访问其他静态和非静态方法,即默认方法。private方法不能在private static方法中使用。
请注意这些方法在接口中的使用。如果不正确使用,编译器会给出'exception in thread "main" java.lang.StackOverflowError'。
总结
在本教程中,通过实例学习了java7、java8和java9版本中的私有方法和静态方法。