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);
}
}