内部类定义
内部类四种形式
1.成员内部类(了解)
可以理解为外部类中的成员方法,内部类要访问外部类中变量和方法的访问权限和外部类中成员方法的访问权限一样
示例代码如下:
对于Outer.this.age的理解为先Outer拿到外部类对象,然后this.age访问外部类的成员方法
纠正:test方法下的第一条语句Sysyem.our.println(age);是访问该内部类的age
访问外部类的成员变量:
2.静态内部类(了解)
可以理解为外部类的静态方法,访问权限就是外部类的静态方法的访问权限
示例代码:
不能访问外部类的实例变量和方法:因为它是外部类对象所持有的
总结:
3.局部内部类(了解,看看就好)
4.匿名内部类(常用,重点学习)
定义
关于new 类或接口(参数列表) 若是接口则不用写参数列表,若是类(一般为抽象类)根据实际应用情况写不写参数列表
示例代码:访问子类中实现的方法(多态形式——左边类型:父类或被实现的接口,右边类型:子类或实现的接口)
1.常规写法
2.匿名内部类写法
匿名内部类的字节码文件如下,java默认将它命名为Test$1,Test2……
使用场景(常见)
匿名内部类,一般自己代码不会写,常用于方法传参时,参数是接口或父类时,需要写匿名内部类构造实现接口或子类
示例代码:
原始形式
简化形式,经常遇见
对于public staic void go(接口或父类 变量名)是种多态写法
总结
匿名内部类,一般自己写功能代码时定义使用,常用于方法传参时,其参数是接口或父类时,需要写匿名内部类构造实现接口或子类,同时匿名内部是还可以用lambda表达式去简化书写代码。