内部类
在类内部也可以定义另一个类。如果在类Outer的内部再定义一个类Inner,此时类Inner就称为内部类,而类Outer则称为外部类。
成员内部类
public class Outer {
public int age;
private String name;
//成员内部类
public class Inner{
private String password;
public void in_method(){
System.out.println("内部类方法");
}
}
public void out_method(){
System.out.println("外部类方法...");
}
}
访问成员内部类中的方法:
第一种:可以通过外部类方法创建内部类对象进行访问
第二种:在外部直接创建内部类对象
语法: 外部类.内部类 内部类名称 = 外部类实例.内部类实例
外部类.内部类 内部类名称 = new 外部类类名().new 内部类类名()
Outer.Inner inner = new Outer().new Inner();
inner.in_method();
外部类想要访问内部类成员,需要创建内部类对象
内部类想要访问外部类成员,直接访问
如果成员内部类中的方法种出现局部变量、内部类中的成员变量、外部类中的成员变量出现重名,我们需要严格区分:
访问局部变量 直接输入变量名称 age
访问内部类中的成员变量 this.变量名称 this.age
访问外部类中的成员变量 外部类类名.this.变量 Outer.this.age
静态内部类
被static修饰的成员内部类,叫做静态内部类
外部创建静态内部类语法:
外部类.内部类 内部类名称 = new 外部类类名.内部类类名();
Outer02.Inner02 inner02 = new Outer02.Inner02();
方法内部类
如果内部类出现在方法的位置,那么就叫做方法内部类
匿名内部类
匿名对象 new 类名()
匿名内部类 ====== 匿名子类
new 类名(){ }
当方法中出现参数为父接口或者父类时,可以尝试使用多态+匿名内部类语法