java1.8函数式接口

时间:2023-03-10 00:27:00
java1.8函数式接口
package com.wzy.t1;

@FunctionalInterface//此注解用来声明此接口为函数式接口
public interface People { /**
* 1.函数式接口只能有一个抽象方法,而不是指只能有一个方法,
* 因为equals()方法在java.lang.Object中已经实现,所以也符合函数式规范
* 2.如果这个接口内只有一个抽象方法,那么即使不写@FunctionalInterface,也被看作是一个函数式接口
* 3.可以有很多默认的方法
* 4.使用default关键字,可以在接口内定义实例方法。
* 注意,这个方法是并非抽象方法,而是拥有特定逻辑的具体实例方法。
* */
public void eat();
//public void eat2();//有第二个会报错
public boolean equals(Object obj);

//接口默认方法
default public void sleep() {
System.out.println("躺着睡");
}
default public void run() {
System.out.println("走路。。");
}
}
package com.wzy.t1;

public interface Student {
public void eat();
default void run() {
System.out.println("小步跑");
}
}
package com.wzy.t1;

public class Main implements People,Student{

    public static void main(String[] args) {
new Main().run();
new Main().eat();
new Main().sleep();
} @Override
public void run() {
//多继承:当两个接口出现相同的默认方法时,必须自己重新定义这个接口,或者指定要使用哪个接口的哪个默认方法
People.super.sleep();
People.super.run();
Student.super.run();
}
@Override
public void eat() {
System.out.println("大口吃");
} }