内部类:
顾名思义是在一个类的内部的类,其只是一个编译时的概念,一旦编译成功,就会成为完全不同的两个类。
内部类的分类:
①成员内部类:类中只能存在成员变量和成员方法。
特点:必须寄存在一个外部类的对象中。可以访问外部类成员(通过:外部类名.this.成员)。类中不能拥有静态成员和静态方法块。
内部类的方法的局部变量的访问:变量名
内部类的成员的访问:this.成员
外部类的成员的访问:外部类名.this.成员
内部类的对象的创建:
1.外部类中的成员方法或代码块中构造内部类对象:new 内部类(); 因为成员方法已经被外部类成员对象调用,在构造内部类时不需要再构造外部类对象
2.外部类以外的地方,或者外部类中没有对象参与静态方法、静态代码块中:外部类.内部类 引用名 = new 外部类().new 内部类()
②静态内部类:可以访问静态变量和静态方法。
内部类的访问: Outer.Inner inner = new Outer.Inner();//类比静态成员通过类名调用
③匿名内部类:
只使用一次的内部类,匿名内部类一般是jdk给定好的一些类。
当创建某对象需要传入抽象类对象或者接口对象时,可以使用匿名内部类。
在创建抽象类对象的同时对其类进行重写实现,否则无法创建抽象类对象。