接口的特性中: JDK8之前:接口中只能存在public修饰的abstract抽象类方法 JDK8:接口中可以存在default和static等非抽象类方法 1.如果使用default:写法如下 public default void method(){ System.out.println("A接口中的默认类型的方法"); } 。。。。 如果要在实现类中重写的话,写法如下(注意权限修饰符级别,和不写default) @Override public void method() { System.out.println("实现类重写的接口A的default方法的书写规则"); } 2.当接口中存在static静态方法: public static void method1(){ System.out.println("A接口中的method1的静态方法"); } 。。。。。实现类不能调用到该方法!!! 在主方法中,由于实现类的对象调用不到static,所以主方法中的调用方式为 用接口名直接 点 方法名 InterA.method1(); //A接口中的method1的静态方法 JDK9:接口中可以存在private修饰的方法 使用条件是: public interface InterA{ public default void methodA(){ getName(); //我们可以将这里的"姓名"作为一个方法提出来为getName() System.out.println("方法A喜欢干的事"); } public default void methodB(){ getName(); System.out.println("方法B喜欢干的事"); } public default void getName(){ System.out.println("姓名") } //注意,如果上面的getName()方法为public修饰,那么该方法可以被该接口的实现类 去重写,就与我们之前对于接口的要求产生了相悖,所以我们将修饰权限改为private 故:(注意这个时候default就不能继续写出来) private void getName(){ System.out.println("姓名") } } 上面可以在main方法中,new接口实现类对象然后 点 调用 InterAImpl i = new InterAImpl(); i.methodA(); i.methodB();
接口2(JDK8/JDK9不同特性)
最新推荐文章于 2024-06-21 17:14:47 发布