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.匿名类中允许使用非静态代码块进行成员初始化操作。
本文来自博客园,作者:z_s_s,转载请注明原文链接:https://www.cnblogs.com/zhoushusheng/p/15870916.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix