匿名内部类是通过父类或者接口去实现的。
package com.kuang.Demo03.lamda;
@SuppressWarnings("all")
//推到Lamda表达式
public class lamdaTest1 {
//3.静态内部类
static class like1 implements ILike{
@Override
public void Lambda() {
System.out.println("我喜欢Lambda1");
}
}
public static void main(String[] args) {
ILike like = new like(); //多态,子类指向父类接口,一个接口派生了多个实现类,多个实现类实现了一个接口!
// 多继承指的是一个接口 可以继承 多个接口!
like.Lambda();
like = new like1();
like.Lambda();
// 4.局部内部类
class like2 implements ILike{
@Override
public void Lambda() {
System.out.println("我喜欢Lambda3");
}
}
like =new like2();
like.Lambda();
// 5. 匿名内部类
like=new ILike() {
//直接去实现接口
@Override
public void Lambda() {
System.out.println("我喜欢Lambda4");
}
};
like.Lambda();
//6.Lambda简化
//必须要是函数化接口
like=()->{
System.out.println("我喜欢Lambda5");
};
like.Lambda();
}
}
//1.定义一个函数式接口
interface ILike{
void Lambda();
}
//2.实现类
class like implements ILike{
@Override
public void Lambda() {
System.out.println("我喜欢Lambda");
}
}
package com.kuang.Demo03.lamda;
public class TestLambda2 {
public static void main(String[] args) {
Ilove love = new Love();
love.love(1);
//匿名内部类
love=new Ilove() {
@Override
public void love(int a) {
System.out.println("我爱你"+a);
}
};
love.love(2);
//Lombda简化
love=(int a)->{
//直接去实现接口
System.out.println("我喜欢Lambda4"+a);
};
love.love(3);
}
}
interface Ilove{
void love(int a);
}
class Love implements Ilove{
@Override
public void love(int a) {
System.out.println("我爱你"+a);
}
}
package com.kuang.Demo03.lamda; public class TestLambda2 { public static void main(String[] args) { Ilove love = new Love(); love.love(1); //匿名内部类 love=new Ilove() { @Override public void love(int a) { System.out.println("我爱你"+a); } }; love.love(2); //Lombda简化 love=(int a)->{ //直接去实现接口 System.out.println("我喜欢Lambda4"+a); }; love.love(3); //二次简化 love=a->{ System.out.println("我喜欢Lambda4"+a); }; love.love(2); // 三次简化 love=a-> System.out.println("我喜欢Lambda4"+a); love.love(5); } } interface Ilove{ void love(int a); } class Love implements Ilove{ @Override public void love(int a) { System.out.println("我爱你"+a); } }