当一个事物的内部,还有一个部分需要一个完整的结构进行描述,而这个内部的完整的结构又只为外部事物提供服务,那么整个内部的完整结构最好使用内部类。
在Java中,允许一个类的定义位于另一个类的内部,前者称为内部类,后者称为外部类。
内部类一般用在定义它的类或语句块之内,在外部引用它时必须给出完整的名称。
内部类的名字不能与包含它的外部类类名相同。
内部类的分类:成员内部类(静态、非静态)和局部内部类(方法内、代码块内、构造器内)
成员内部类:
一方面,作为外部类的成员:
可以调用外部类的结构
可以被static修饰
可以被4种不同的权限修饰
另一方面,作为一个类:
类内可以定义属性、方法、构造器等
可以被final修饰, 表示此类不能被继承,不使用final,就可以被继承
可以被abstract修饰
创建静态的成员内部类实例
外部类名.内部类名 实例对象名 = new 外部类名.内部类名();
创建非静态的成员内部类实例
外部类名 外部类实例对象名 = new 外部类名();
外部类名.内部类名 内部类实例对象名 = 外部类实例对象名.new 内部类名();
内部类中调用属性
public method(name){system.out.print(name); //方法形参system.out.print(this.name); //内部类实例对象的属性system.out.print(外部类.this.name); //外部类实例对象的属性
}