匿名内部类本质——基于接口小结总结:记住语法,忘记时间(p1)以接口为例,匿名内部类与传统方式的区别:①匿名内部类只在定义其的方法或代码块中生效,并且在一次方法调用过程中只能创建一个匿名对象,随着方法销毁而销毁(个人认为),随着方法(代码块)调用而再次创建。②传统方式为定义外部其他类实现接口,再在程序中创建对象调用。匿名内部类优点为定义即创建,提高开发效率,调用方法即创建,随方法消亡而消亡。补充:Anonymous——匿名老师认为传统方法是p3中的四步,创建、实现、方法中实例化并调用、main方法中实例化并调用;我认为是p4中的三步,创建、实现、main方法中实例化并调用以及我不太懂的一些需求:(p5)有一个需求 Tiger/Dog 类只使用一次,后面再不使用;(p6)这样的类多了就很烦。只能说其实还是简化开发,有可能节省资源,就是调用这个方法时才使用一次,其二我感觉还是高效,定义即创建,很高效的。至于p6老师说的意思可能也是,传统方法类多了,比较繁琐的,用匿名内部类,这种情况越多越能体现其高效。语法要记住:new 接口() { 类体(也就是这个匿名类的五大成员就可以在这里写)};这样Tiger这个类,系统就帮你自动创建了,默认你看不到名字,以及创建完实例你便无法再使用这个类。(p6)编译器底层的动作,帮程序员节省了一些工作。//匿名内部类不能在定义其的方法或代码块外面创建(亲测)//但是你想在定义其的方法或代码块中创建编译器不答应(p8)//7.jdk底层在创建匿名内部类 Outer04$1,立即就创建了 Outer04$1实例,并且把地址返回给 tiger//8.匿名内部类使用一次,就不能再使用.即 返回一个Outer04$1实例后,你就找不到 Outer04$1 了定义即创建,可以返回地址或调用其方法,但是这个类你就找不到了(匿名的体现)值传递是可以的,也就是调用一次方法,只能生成匿名内部类的一个对象。(p9)下次再调用方法,该匿名内部类系统分配的名称依然为Outer04$1 (亲测)