匿名内部类——基于类
总结:匿名内部类——基于类,其实是继承了其他类,并且传入的参数会进父类构造器。
补充:
p1:忽然明白上一节我的三步差在哪儿了,为什么要内部类,因为要和这个外部类绑定,我上一节的三步只是一个单独的实现接口的类,不搭尬。脱离了Outer04,没有Outer04的属性和方法
所以这次匿名内部类依然是在Outer04类内部演示。
而且这次老师没有Father类,上次的接口,是重新写的类体,这次的father类,需要继承所以提前就得存在。综合来讲,无论是匿名内部类||接口,都可以讲是实现(继承)了其他类||接口的一个类,并创建了对象。
p2:加不加大括号是两个概念。加大括号,继承了Father类的匿名内部类,系统命名规则:外部类名+$0+当前匿名内部类个数;不加大括号,就是实例化一个Father类对象
p3:可以在new完掉方法,准确来说,new完三选一:啥都不干;掉方法;传地址
p4:证明可以啥都不干,证明不可以同时掉方法和传地址
p5:底层是有操作的,其实就相当于定义并创建了一个Father的子类&Outer04的内部类,高效指出在于干了两件事。
我认为这肯定算在同包下,但是Father&Outer04$02应该不算同类,因为都是两个独立的类。没有谁包含谁的关系。
依然遵循子类可以重写父类的方法,依然是new即创建一个对象。
p6&p7:匿名内部类的父类是抽象类,那么所有抽象方法都要实现。因为new语句,没有地方再让你声明匿名内部类是abstract
p8&p9//5.注意("jack")参数列表会传递给 构造器
并且子类无法重写父类构造器,Outer04$02编译器不识别,你写Father也是父类特有的构造方法。
探究:内部类中的内部类怎么说呢?这个留着以后再探讨...先把这个最基本的学明白
加油