内部类
一类中的类 被称为内部类
class Outer{
class Inner{
//内部类
}
}
一.成员内部类
声明在类以内 方法以外的类被称为成员内部类
地位相当于成员变量
语法:
class Outer{
int a;
class Inner{
}
}
1.编译过后会生成什么
编译过后生成一个 名为 外部类类名$内部类类名.class 的字节码文件 用来区分内部类与外部类
2.内部类中可以声明什么
只可以声明非静态成员,不能声明静态成员
3.内部类中可以使用什么
a.可以使用本类以内所有的成员
b.可以使用外部类的静态成员与非静态成员,私有的也可以使用
c.外部类属性 内部类属性 局 部变量是可以命名冲突的,且依然局部变量优先 内部类属性---this.属性名 外部类属性---外部类类名.this.属性
4.如何创建内部类的对象
a.先创建外部类对象
Outer out = new Outer();
b.使用特殊语法创建内部类对象
外部类类名.内部类类名 对象名 = 外部类对象.new 内部类类名(参数);
Outer.Inner inner = out.new Inner();
二.静态内部类
被static修饰的成员内部类 被称为静态内部类
地位相当于静态成员
语法:
class Outer{
int a;
static class Inner{
}
}
1.编译过后会生成什么
编译过后生成一个 名为 外部类类名$内部类类名.class 的字节码文件 用来区分内部类与外部类
2.内部类中可以声明什么
可以声明静态成员 与 非静态成员
后续有用!请记住: 静态内部类中可以定义静态初始化代码块,且外部类类加载时不会触发静态内部类的类加载
3.内部类中可以使用什么
a.可以使用本类以内的内容
b.只能使用外部类的静态成员 不能使用非静态成员
c.外部类属性 内部类属性 局部变量是可以命名冲突的,且依然局部变量优先
内部类属性---this.属性名
外部类属性---外部类类名.属性名
4.如何创建内部类的对象
外部类类名.内部类类名 对象名 = new 外部类类名.内部类类名();
三.局部内部类 熟悉
<