成员内部类,成员静态内部类,局部内部类,匿名内部类和lambda表达式


前言

lambda表达式 1.8开始 函数式编程:强调做什么

一、成员内部类

class outer {

    int a = 0;

    class inner {
        int a = 20;

        void show() {
            int a = 30;
            System.out.println(a);      // 30


            System.out.println(this.a);// 20
            //访问外部类的方式
            System.out.println(outer.this.a);// 0
        }
    }
}
//创建方式
outer.inner inner = new outer().new inner();
        inner.show();

二、成员静态内部类

class Outer{
    
    static class inner{
       void show(){};
    }
}
//创建方式
Outer.inner inner = new Outer.inner();
        inner.show();

三.局部内部类

class Outer{

     class inner{
       void show(){
           //只供本方法使用
           class methodInner{
               
           }
       };
    }
}

四.匿名内部类

  • lambda格式:(特别的匿名内部类)
    (形式参数)->{代码块} 多个参数用,分隔
    前提:有一个接口,接口有且只有一个抽象方法

  • lambda省略规则:参数类型要么都不写,要么都写,且要按顺序写
    如果参数只有一个小括号可以不写
    如果代码块只有一条,可以省略掉大括号和分号,甚至return

  • lambda与匿名内部类不同:
    匿名内部类可以实现接口也可以是抽象类还可以是具体类 lambda只能是接口
    如果有多个抽象方法不能使用lambda表达式
    匿名内部类编译完成之后是一个独立的class文件
    lambda是在运行的时候动态的生成字节码

interface inter{ //接口形式
    void show();
}
//实现
  new inter() {
                @Override
                public void show() {
                    
                }
            }.show();  //·show()之前代表本对象
class inter1{ //类形式
    void show(){
        System.out.println("show");
    }
}
//实现
  new inter1(){
             @Override
             void show() {
                 super.show();
             }
         };

五.lambda表达式

interface inter{ //lambda表达式只能对一个抽象方法的接口使用
    void show();
}
interface inter1{
    int add(int a, int b);
}
//实现
     inter i=()-> System.out.println("a");
        adds((int a,int b)->{return a+b;},1,2);
    }

    static void   adds(inter1 i,int num1,int num2){

        System.out.println( i.add(num1,num2));
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值