本文所使用的demo来自https://www.geeksforgeeks.org/private-methods-java-9-interfaces/
Java接口
一直到jdk7之前,接口中只能包含两个内容,
- 常量
- 抽象方法
// Java 7 program to illustrate
// private methods in interfaces
public interface TempI {
public abstract void method(int n);
}
class Temp implements TempI {
@Override
public void method(int n)
{
if (n % 2 == 0)
System.out.println("geeksforgeeks");
else
System.out.println("GEEKSFORGEEKS");
}
public static void main(String[] args)
{
TempI in1 = new Temp();
TempI in2 = new Temp();
in1.method(4);
in2.method(3);
}
}
jdk8允许在接口中增加default方法以及static方法,因此接口中可以包含4类数据
- 常量
- 抽象方法
- static方法
- default方法
// Java 8 program to illustrate
// static, default and abstract methods in interfaces
public interface TempI {
public abstract void div(int a, int b);
public default void
add(int a, int b)
{
System.out.print("Answer by Default method = ");
System.out.println(a + b);
}
public static void mul(int a, int b)
{
System.out.print("Answer by Static method = ");
System.out.println(a * b);
}
}
class Temp implements TempI {
@Override
public void div(int a, int b)
{
System.out.print("Answer by Abstract method = ");
System.out.println(a / b);
}
public static void main(String[] args)
{
TempI in = new Temp();
in.div(8, 2);
in.add(3, 1);
TempI.mul(4, 1);
}
}
jdk9中引入的私有方法以及私有静态方法,因此接口中可以包含6类数据
- 常量
- 抽象方法
- static方法
- default方法
- private方法
- private static方法
// Java 9 program to illustrate
// private methods in interfaces
public interface TempI {
public abstract void mul(int a, int b);
public default void
add(int a, int b)
{
// private method inside default method
sub(a, b);
// static method inside other non-static method
div(a, b);
System.out.print("Answer by Default method = ");
System.out.println(a + b);
}
public static void mod(int a, int b)
{
div(a, b); // static method inside other static method
System.out.print("Answer by Static method = ");
System.out.println(a % b);
}
private void sub(int a, int b)
{
System.out.print("Answer by Private method = ");
System.out.println(a - b);
}
private static void div(int a, int b)
{
System.out.print("Answer by Private static method = ");
System.out.println(a / b);
}
}
class Temp implements TempI {
@Override
public void mul(int a, int b)
{
System.out.print("Answer by Abstract method = ");
System.out.println(a * b);
}
public static void main(String[] args)
{
TempI in = new Temp();
in.mul(2, 3);
in.add(6, 2);
TempI.mod(5, 3);
}
}
网友评论