外部类、静态内部类、内部类、局部内部类、匿名内部类、lambda表达式实现接口
实现接口的方式:
接口定义
interface Person {
public void say();
}
外部类
//外部类
class Student1 implements Person {
public void say() {
System.out.println("外部类");
}
}
其他
public class classTest {
//内部类
class Student2 implements Person {
public void say() {
System.out.println("内部类");
}
}
//静态内部类
static class Student3 implements Person {
public void say() {
System.out.println("静态内部类");
}
}
public static void main(String[] args) {
//局部内部类
class Student3 implements Person {
public void say() {
System.out.println("局部内部类");
}
}
//匿名内部类
Person p1 = new Person(){
public void say() {
System.out.println("匿名内部类");
}
};
//lambda表达式 适用于函数式接口
Person p2 =() -> System.out.println("lambda表达式");
}
}
其实大同小异,只不过发现越来越洁。
Lambda表达式
这个首先得配一下idea支持 lambda8
首先想要使用Lambda表达式实现接口,该接口必须为一个函数式接口,即该接口只有一个待实现的抽象方法。
如下:接口可定义非抽象方法。
@FunctionalInterface
interface Person {
static int a = 1;
public void say();
public static void add() {
System.out.println(1);
}
public default int get() {
return a;
}
}
我们这个say方法还是很简单的,没有参数。如果有参数怎么写?
@FunctionalInterface
interface Person2 {
public void say(String str);
}
class tt{
public static void main(String[] args) {
Person2 person2 = (str) -> System.out.println(str);
person2.say("参数");
}
}
- 前面括号内就是形参
- 如果方法体只有一行代码可省略大括号,和if一样