Fork me on GitHub

Inner class & Anonymous (inner) class

内部类:在一个类中定义另一个类。

1.通过内部类,一个类可以使用另一个类。内部类的外部类的成员变量在内部类中仍然有效。

2.不论是静态还是非静态的,内部类中的方法也可以调用外部类中的方法。内部类的类体中不可以声明类变量和类方法。

3.外部类可以在函数中创建的内部类对象。

4.如果内部类的权限是非私有、非静态的,可以通过创建外部类对象访问。Outer.Inner oi=new Outer().new Inner();oi.use();

5.如果内部类是静态的,非私有的,可以用类名调用静态成员。

6.静态的内部类的生命周期跟普通的static无差异。

7.局部内部类不能访所在局部的局部变量。若需访问,加final修饰变量。(jdk1.8自动添加final)。

8.使用内部类简化书写。

匿名类:即无类名内部类。

其有两种实现方式:继承一个类,重写其方法。实现一个或多个接口,实现其方法。

Outer ot = new Outer(){

  void show(){

  System.out.println("run in Inner");

}

}

1.无名不能引用,不能实例化,不能有构造器,只用一次。它是利用父类的构造函数和自身类体构造成一个类(没有extends和implements关键字
是因为匿名内部类无类名,则也无关键字。继承或者实现关系由jvm负责)。

2.匿名类可以继承父类的方法,也可以重写父类的方法。

3.匿名类可以访问外部类的成员变量和方法,匿名类的类体不可以声明成static成员变量和方法。

4.匿名类是一个创建的结果,可以赋值给一个父类对象。因此可以分为两种匿名类,成员匿名类和局部匿名类(作为函数参数)。

5.匿名类中允许使用非静态代码块进行成员初始化操作。

posted @   z_s_s  阅读(61)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示