Java学习笔记 接口定义增强

接口定义增强

1、本次预计讲解的知识点

使用default与static定义接口方法。

2、具体内容

         从java发展之初到今天已经20年,在这20年的时间里面所有的开发者都知道java接口由全局常量和抽象方法所组成,但是JDK1.8的时代这一组成改变了。

         如果说现在有某一个接口,这个接口随着时间的发展已经产生了2w个子类,突然的发现这个接口里面方法不足,应该在增加一个方法,而针对所有不同子类,这个方法的功能实现是完全不一样的。按照最初的做法,应该在每一个子类上都覆写这个新的方法。那么就要修改2w个子类。

         所以为了解决这个问题,允许在接口里面定义普通方法了。但是如果要定义普通方法就必须明确的使用default来进行定义。

package cn.mldn.demo;

interface IMessage {

         public void print();//这是一个接口里面原本定义的方法

         default void fun(){//在接口里面定义了一个普通方法。

                   System.out.println("毁三观的方法出现了");

         }

}

class MessageImpl implements IMessage{

         @Override

         public void print(){

                   System.out.println("Hello World");

         }

}

public class TestDemo{

         public static void main(String[] args){     

                   IMessage msg = new MessageImpl();

                   msg.fun();//此方法在接口里面直接定义的。

         }       

}

 

E:\java>javac -d . TestDemo.java

 

E:\java>java cn.mldn.demo.TestDemo

毁三观的方法出现了

         除了使用default方法外,还可使用static定义的方法,一旦使用了static定义方法意味着这个方法可以直接由类名称调用。

范例:定义static方法。

package cn.mldn.demo;

interface IMessage {

         public void print();//这是一个接口里面原本定义的方法

         default void fun(){//在接口里面定义了一个普通方法。

                   System.out.println("毁三观的方法出现了");

         }

         static void get(){

                   System.out.println("interface");

         }

}

class MessageImpl implements IMessage{

         @Override

         public void print(){

                   System.out.println("Hello World");

         }

}

 

public class TestDemo{

         public static void main(String[] args){     

                   IMessage msg = new MessageImpl();

                   msg.fun();//此方法在接口里面直接定义的。

                   IMessage.get();

         }       

}

 

E:\java>java cn.mldn.demo.TestDemo

毁三观的方法出现了

interface

         在JDK1.8里面由一个重要的概念:内部类访问方法参数的时候可以不加上final关键字。所有出现的这些新特性,完全打破了java已有的代码组成形式。

3、总结

1、接口里面使用default或static定义方法的意义是避免子类重复实现同样的代码

2、接口的使用还应该以抽象方法为主。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值