javaSE--匿名内部类
一、内部类
1、内部类
在类的内部又定义一个新的类,被称为内部类
2、内部类的分类
静态内部类:类似于静态变量
实例内部类:类似于实例变量
局部内部类:类似于局部变量(匿名内部类属于局部内部类一种)
3、使用内部类编写的代码,可读性较差,能不用尽量不用
class Test01{ // 静态变量 static String country; // 该类在类的内部,所以称为内部类 // 由于前面有static,所以称为“静态内部类” static class Inner1{ } // 实例变量 int age; // 该类在类的内部,所以称为内部类 // 没有static叫做实例内部类。 class Inner2{ } // 方法 public void doSome(){ // 局部变量 int i = 100; // 该类在类的内部,所以称为内部类 // 局部内部类。 class Inner3{ } } public void doOther(){ // doSome()方法中的局部内部类Inner3,在doOther()中不能用。 } }
二、匿名内部类
class Test01{ public static void main(String[] args){ // 调用MyMath中的mySum方法。 MyMath mm = new MyMath(); // 使用匿名内部类,表示这个ComputeImpl这个类没名字了。 // 这里表面看上去好像是接口可以直接new了,实际上并不是接口可以new了。 // 后面的{} 代表了对接口的实现。 // 不建议使用匿名内部类,一个类没有名字,没有办法重复使用。另外代码太乱,可读性太差。 mm.mySum(new Compute(){ public int sum(int a, int b){ return a + b; } }, 200, 300); } } // 负责计算的接口 interface Compute{ // 抽象方法 int sum(int a, int b); } // 你自动会在这里编写一个Compute接口的实现类 /* class ComputeImpl implements Compute{ // 对方法的实现 public int sum(int a, int b){ return a + b; } } */ // 数学类 class MyMath{ // 数学求和方法 public void mySum(Compute c, int x, int y){ int retValue = c.sum(x, y); System.out.println(x + "+" + y + "=" + retValue); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构