Java接口补充

JDK8之前的接口中只有抽象方法,但是上课过程中我了解到在此之后java进行了一些更新,于是写在这篇文章中记录。

接口体中的default方法:

 JDK8版本开始允许使用default关键字,在接口体中定义称作default的实例方法(但要注意不能定义default的static方法),简单来理解就是在接口中提供一个不需要子类实现的默认实现方法,值得注意的是default方法是可以被子类重写的,也可以在接口中定义定义多个default方法。

eg.

interface Com { 
    public final int MAX = 100;  
    public abstract void add();   
    public abstract float sum(float x ,float y);
    public default int max(int a,int b) {   //default方法
         return a>b?a:b;
    }
}

接口体中的static方法:

同样地,在JDK8版本开始,允许在接口体中定义static方法。这个就不需要多说了,

eg.

public interface Com { 
    public static final int MAX = 100;  
    public abstract void on();   
    public abstract float sum(float x ,float y);
    public default int max(int a,int b) {  
         return a>b?a:b;
    }
    public static void f() {  //static方法
         System.out.println("注意是从Java SE 8开始的");
    }
}

另外从JDK9开始还允许在接口体中定义private方法,目的就是配合default方法将某些算法封装在private方法中,供default的实例方法调用,实现算法复用,不过这个目前对我不是很有用,就不举例了。

抽象对象和接口相似性叙述:

其实接口和抽象类很像,除了多继承以外甚至功能都是基本一样的,比如上转型对象其实就跟接口的回调是一个意思,上转型:father f=new son();接口回调:inter obj=new()implecom。

lambada表达式:

lambada表达式也是jdk8后的一个更新,主要用在单接口,也就是接口中只有一个抽象方法的时候。

eg.

interface  ShowMessage {
   void 显示商标(String s);
}
public class Example6_3 {
   public static void main(String args[]) {
       ShowMessage sm;   //声明接口变量。
       sm=(s)->{         //接口变量中存放Lambada表达式的值。
           System.out.println("tvtvtvtv");
           System.out.println(s);
           System.out.println("tvtvtvtv");  
       };
       sm.显示商标("长城牌电视机"); //接口回调Lambada表达式实现的接口方法。
       sm=(s)->{         //接口变量中存放Lambada表达式的值
           System.out.println("pcpcpcpc");
           System.out.println(s);
           System.out.println("pcpcpcpc");  
       };
       sm.显示商标("华为个人电脑"); //接口回调Lambada表达式实现的接口方法。
   } 
}

 其实上述lambada表达式的原型是这样的:

class A implement ShowMessage {
	public void 显示商标(String s){
	    System.out.println("pcpcpcpc");
        System.out.println(s);
        System.out.println("pcpcpcpc"); 	
	}
}

其实lambada表达式就是一种简写,算是一种语法而不是新的方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值