`
haofenglemon
  • 浏览: 244002 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

局部内部类

    博客分类:
  • java
 
阅读更多
在方法中定义的内部类就是局部内部类

与局部变量类似,在局部内部类前不加修饰符public和private 其范围为定义它的代码块

这里我们需要注意一下:
局部内部类不仅可以访问外部类私有实例变量,还可以访问外部类的局部变量 (但是前提是局部变量必须是final类型的)

在类外不可直接访问局部内部类(保证局部内部类对外是不可见的)
在方法中才能调用其局部内部类。
通过内部类和接口达到一个强制的弱耦合,用局部内部类来实现接口,并在方法中返回接口类型,使局部内部类不可见,屏蔽实现类的可见性。


匿名内部类
匿名内部类是一种特殊的局部内部类,它是通过匿名类实现接口,并只创建一次
一个类用于继承其他类或者是实现接口,并不需要增加额外的方法,只是对继承方法的实现或者是覆盖。
为了获得一个对象的实例,不需要知道其实际类型
类名没有意思,不需要使用到

一个匿名内部类一定是在new的后面,用其隐含实现一个接口或者是实现一个类。没有类名。根据多态,我们使用父类名。
因为是局部内部类,那么局部内部类的所有限制都对其生效。
匿名内部类是唯一一种无构造方法的类。
大部分匿名内部类是用于接口回调的
匿名内部类在编译的时候由系统自动起名字Out$1.class
如果一个对象编译时的类型是接口,那么其运行的类型为是实现这个接口的类
因为匿名内部类无构造方法,所以其使用范围非常的有限
当需要多个对象时使用局部内部类,因此局部内部类的应用相对比较多,匿名内部类中不能定义构造方法

匿名内部类的写法

interface A{
          void wahaha();
}
class B{
    public  A aaa(){
      
   return new A(){
      void wahaha(){...}
     };

   }
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics