内部类和Lambda表达式

一.内部类:在一个类中再定义一个类

1.成员内部类

        private;

                   私有成员内部类:在自己所在的外部类中创建独享访问。通过在外部类中创建method方法,在主函数中创建对象调用method方法来实现对私有内部类的访问。           

 public static void main(String[] args){ 
      Outer o=new Outer();
     o.method();
    
}

class Outer {//外部类

    private class Inner {//内部类

        public void show() {
            System.out.println("inner...show");
        }
    }
public  void  method(){
        Inner I=new Inner();
        I.show();
}

        static;

                    静态成员内部类访问格式:外部类名.内部类名 对象名=new 外部内名.内部类名();

                    静态成员中的内部类方法:外部类名.内部类名.方法;

局部内部类:在方法中定义的类。外界无法访问,需要在方法内部创建对象并使用。该类可以直                          接访问外部类的成员,也可以访问方法内部的局部变量。


public class Test4Innerclass {
    /*
    局部内部类
           编写位置:方法中
            访问方式;只能在方法中,创建对象并访问
    */
    public static void main(String[] args) {
    Outer o=new Outer();
    o.method();;
    }
}
class  Outer{//外部类
    public void method(){//外部内中的成员方法
        class Inner{//局部内部类,定义在外部类的成员方法
            public  void  show(){
                System.out.println("show...");
            }
        }
        //在外部类的方法中创建对象,用该方法调用内部类中的方法
        Inner i=new Inner();
        i.show();;
    }
}

匿名内部类:匿名内部类本质上是一个特殊的局部内部类(定义在方法中)(掌握)

                     将继承,重写,实现放在一步。

                     作用:当方法的形式参数是接口或抽象类时,可以将匿名内部类作为实际参数传进去

二,Lambda表达式(函数式接口)

       设置格式:(形式参数)  -> {代码块}

       形式参数:如果有多个参数,用逗号隔开,如果没有参数留空即可

       使用前提:1)有一个接口         2)接口中有且仅有一个抽象方法

       Lambda表达式省略模式:1)参数类型可以省略,但是多个参数的情况下,不能只省略一个

                                                 2)如果参数有且仅有一个,那么小括号可以省略

                                                 3)如果代码块只有一条,可以省略大括号和分号,甚至是return

三.Lambda和匿名内部类的区别

     1.所属类型不同:

        匿名内部类:可以是接口,也可以是抽象类,还可以是具体类

        Lambda:只能是接口

      2.使用限制不同

         如果接口中有且仅有一个抽象方法,可以使用Lambda表达式,也可以使用匿名内部类

         如果接口中多余一个抽象方法,只能使用匿名内部类,而不能使用Lambda表达式

       3. 实现原理不同

          匿名内部类在编译后可以单独生成一个  .class字节码文件

          Lambda表达式:编译后,没有一个单独的class字节码文件,对应的字节码会在运行的时候            动态生成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值