接口2(JDK8/JDK9不同特性)

接口的特性中:
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();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值