内部类---匿名内部类
匿名内部类(重要!!!)
//1.本质是类 2.是内部类3.该类没有名字(系统给取的,看不见)4.是一个对象
说明: 匿名内部类是定义在外部类的局部位置,比如在方法中,并且没有类名
匿名内部类的基本语法:
new 类或接口(参数列表){
类体
};
//匿名内部类的语法()
1.因为匿名内部类既是一个类,同时它本身也是一个对象。
2.因此从语法上看,它既有定义类的特征,也有创建对象的特征
3.可以直接访问外部类的 所有 成员,包含私有的
4.不能添加访问修饰符,因为它 就是一个 局部变量。
5.作用域 : 仅仅在定义它的方法或代码块中。
6.匿名内部类---访问---->外部类成员 [访问方式: 直接访问]
7.外部其他类---不能访问---->匿名内部类( 因为 匿名内部类 是一个局部变量)
8.如果外部类和匿名内部类的成员重名时,匿名内部类访问的话,默认遵循就近原则如果想访问外部类的成员,
则可以使用 类名.this.成员)去访问
匿名内部类作为参数
1 public class AnnoyInnerClass { 2 public static void main(String[] args){ 3 Cellphone cellphone = new Cellphone(); 4 //new Computer() { 5 // @Override 6 // public void work() { 7 // system.out.println("重写work()方法"); 8 // } 9 // }//这一整块都是匿名内部类,因为是将匿名内部类作为参数传入了 10 cellphone.testWork(new Computer() {//编译类型就是接口,运行类型就是这个匿名内部类 11 @Override 12 public double work(double n1 ,double n2) { 13 return n1+n2; 14 } 15 },5,6); 16 17 } 18 } 19 20 interface Computer{ 21 public double work(double n1,double n2); 22 } 23 24 class Cellphone { 25 //当调用了testWork方法时,直接传入了一个实现了Computer接口的匿名内部类 26 public void testWork(Computer computer,double n1,double n2){ 27 double result = computer.work(n1, n2);//动态绑定 28 System.out.println("计算结果="+result); 29 } 30 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)