接口组成更新概述
接口的组成
- 常量
public static final - 形象办法
public abstract - 默认办法 (java 8)
- 形象办法 (java 8)
- 公有办法 (java 9)
接口中默认办法
实现接口的降级
//定义一个接口 外面有两个形象办法public interface MyInterface{ void show1(); void show2();}//定义接口的两个实现类//第一个public class MyInterfaceImplOne implements MyInterface{ //重写形象办法 @Override public void show1(){ sout("One show1"); } @Override public void show2(){ sout("One show2"); }}//第二个public class MyInterfaceImplTwo implements MyInterface{ //重写形象办法 @Override public void show1(){ sout("Two show1"); } @Override public void show2(){ sout("Two show2"); }}//定义测试类//在主办法中,依照多态的形式创建对象并应用MyInterface my = new MyInterfaceImplOne();my.show1();my.show2();
如果要降级接口,在接口中定义新的形象办法,那接口的实现类就须要重写增加的这个办法,这样会很麻烦,于是做出如下扭转,定义一个新的接口 让这个接口继承咱们原本的接口,然而这样如果接口更新得比拟快,就会生成很多子接口就会很简单
//定义一个新的接口 让这个接口继承咱们原本的接口public interface MyInterfaceSon extends MyInterface{ void show3();}
对下面呈现的问题再进行进化,利用接口中默认办法
- 格局:public default 返回值类型 办法名(参数列表){ }
- 范例:public default void show3(){ }
//在下面那个接口中做出扭转//定义一个接口 public interface MyInterface{ void show1(); void show2(); public default void show3(){//其余类都不会报错 public能够省略 sout("show3"); }}
在测试类中my.show3();一样能够应用,也能够在接口实现类中重写,会在控制台输入One show3
接口中静态方法
- 格局:public static 返回值类型 办法名(参数列表){ }
- 范例:public static void show(){ }
//定义一个接口 外面有三个办法,一个形象办法,一个默认办法,一个静态方法public interface Inter{ void show(); default void method(){ sout("Inter中的默认办法执行了"); } public static void test(){//public能够省略 sout("Inter中的静态方法执行了"); }}//定义接口的一个实现类public class InterImpl implements Inter{ //重写形象办法 @Override public void show(){ sout("show办法执行了"); }}//定义测试类//在主办法中,依照多态的形式创建对象并应用Inter i= new InterImpl();i.show();//能够执行i.method();//能够执行i.test();//报错InterImpl.test();//报错//接口中的静态方法只能被接口调用Inter.test();//能够执行
接口中公有办法
- 格局1:private 返回值类型 办法名(参数列表){ }
- 范例:private void show(){ }
- 格局2:private static 返回值类型 办法名(参数列表){ }
- 范例:private static void method(){ }
定义的接口的默认办法
定义的接口的静态方法
//定义接口的一个实现类public class InterImpl implements Inter{ //没有形象办法不须要重写}//定义测试类//在主办法中,依照多态的形式创建对象并应用Inter i= new InterImpl();i.show1();//能够执行i.show2();//能够执行//接口中的静态方法只能被接口调用Inter.method1();//能够执行 Inter.method2();//能够执行
//在接口中定义一个公有办法,把一样的局部提取进去//上面面这个是非静态方法,只能调用默认办法(非动态),不能调用静态方法private void show(){ //公共局部 }
//定义一个动态公有办法private static void method(){ //公共局部 }
公有的静态方法无论是默认办法还是静态方法都能够调用,公有非静态方法只能默认办法(非动态)调用