内部类
作用:实现多重继承,实现隐藏,减少类文件编译后产生的字节码文件大小
1 成员内部类 不能写静态属性和方法/实例化内部类需要先实例化外部类,通过外部类调用内部类
可以访问外部类的所有属性
内外部变量名一样时,可以通过this调用内部类 内部类的值会将外部类隐藏 out.this.显示外部属性
2 静态内部类 不能调用外部方法和属性 能够直接被外部了实例化(因为类已加载就初始化)
可以声明静态方法和变量
3 局部内部类 局部内部类是在一个方法内部声明的一个类
局部内部类中可以访问外部类的成员变量及方法
局部内部类中如果要访问该内部类所在方法中的局部变量,那么这个局部变量就必须是final修饰的
在方法中实例出自己来,通过内部类对象调用自己类中的方法
4 匿名内部类 常用内部类 不把实例保存在变量中 只需要用一次
匿名内部类除了依托的类或接口之外,不能指定继承或者实现其他类或接口,同时也不能被其他类所继承,因为没有名字。
匿名内部中,我们不能写出其构造器,因为没有名字。
匿名内部中,除了重写上面的方法外,一般不会再写其他独有的方法,因为从外部不能直接调用到。(间接是调用到的)
图解
匿名代码块和静态代码块的执行
匿名代码块是在创建对象的时候自动执行的,并且在构造器执行之前。同时匿名代码块在每次创建对象的
时候都会自动执行.
静态代码块是在类加载完成之后就自动执行,并且只执行一次.
匿名代码块和静态代码块的作用
匿名代码块的作用是给对象的成员变量初始化赋值,但是因为构造器也能完成这项工作,所以匿名代码块
使用的并不多。
静态代码块的作用是给类中的静态成员变量初始化赋值。