JAVA中接口的使用

JAVA接口的概念:

Java接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。

代码的实现:

package lam01;

import javax.sound.midi.Soundbank;

import static java.lang.System.out;

//接口执行模板
interface IAction{
    public void ok();
}
class Abc implements IAction{
    @Override
    public void ok() {
        out.println("ok...");
    }

}
public class Demo1 {
    public static void say(IAction ac){
        ac.ok();
    }
    public static void main(String[] args) {
      //第一种 使用实现接口的类实例化后,调用say方法,say方法中参数多态
        Abc a=new Abc();
        //直接调用say方法
        say(a);
      //第二种 使用匿名内部类,减少接口不必要的类的定义
        say(new IAction() {
            @Override
            public void ok() {
                out.println("ni ok...");
            }

        });
        //第三种方式使用lambda表达式,  say中调用一个匿名内部类对象,由于 say方法规定了操作接口,所以不需要指定接口
        //()-> System.out.println("ok ok...")接口声明被省略,所以接口的执行方法不能省略
        /*
        * lambda表达式:对应java方法参数多态用法,要求参数对应接口中的抽象操作方法是唯一的;
        * 语法:
        *    ([实参列表...])->{语句体}
        * */
        say(()->{
            System.out.println("我是一个lambda表达式...");
        });
    }
}
package lam01;
interface IC{
    //唯一的一个抽象方法
    public void add(int a,int b);
    //静态方法
    public static double sq(double x){
        return Math.sqrt(x);
    }
    //默认方法
    public default double sub(int x,int y){
        double r=x-y;
        return sq(r);
    }
}
public class Demo2 {
    static void  say(IC ic,int a,int b){
        ic.add(a,b);
    }
    public static void main(String[] args) {
        say(new IC() {
            @Override
            public void add(int a, int b) {
                double y=sub(a,b);
                System.out.println(IC.sq(y));
            }
        }, 8, 6);
        //lambda表达式调用say  , 回调方式执行lambda中语句
        say((a,b)->{
            System.out.println(IC.sq(a));
            },8,6);
    }

}
package lam01;
interface IDao{
    public void calc(double...num);
}
public class Demo3 {
    public static void disc(IDao dao,double...x){
        dao.calc(x);
    }
    public static void main(String[] args) {
        double[] da={6.3,1.6,6.8};
        disc((double...arr)->{
            double s=0;
            for(double a:arr){
                s+=a;
            }
            System.out.println(s);
        },da);
    }
}
import java.util.ArrayList;
import java.util.Random;

interface IC{
    public void exit(double...num);
    public static double standDevi(double x,double y,int i){
      double z=(x-y)*(x-y);
      double s=z/i;
      return Math.sqrt(s);
    }
}
public class Demo01 {
    public static void disc(IC ic,double...x){
        ic.exit(x);
    }

    public static void main(String[] args) {
        double[] da={6,2,5,4,5,7,5};
          disc((arr)->{
              double s=0;
              for (double e;arr){
                  s+=e;
              }
              System.out.println(s);
          },da);
    }

}

猜你喜欢

转载自blog.csdn.net/weixin_42775190/article/details/81235556