前言
在学习Java的过程当中,不难发现Java全是由类与对象构成的,所以在一个类当中定义和使用一个另外一个类是我们学习过程中必须要学会使用的,而这种类,被称之为内部类。
一、实例内部类
代码语言:javascript复制class A{
void a(){
}
class B{
void a(){
}
}
}
- 一般情况下,不能有static修饰的属性的方法(使用static final 可以修饰属性,final修饰的常量在编译时已经确定);
- 实例化实例内部类: 外部类名.内部类名 变量名 = 外部类对象的引用.new 内部类名();
A.B b = new A().new B();
- 当外部类与实例内部类某属性或方法相同时,在实例内部类中想使用外部类属性或方法:
外部类名.this.属性/方法;
A.this.a();
二、静态内部类
代码语言:javascript复制class A{
public int a1;
static class B{
}
}
- 实例化静态内部类: 外部类名.内部类名 = new 外部类名.内部类名();
A.B b = new A.B();
- 在静态内部类中,访问外部类非静态成员时,创建一个外部类对象,通过对象引用该成员;
访问外部类静态成员时,正常使用即可。
三、局部内部类
代码语言:javascript复制class A{
void a(){
class B{
}
}
}
- 不能被public,static 等修饰符修饰;
- 只能在定义的位置使用:局部内部类B只能在方法a中创建和使用。
四、匿名内部类
代码语言:javascript复制class A implements B(){
@override
public void a1(){}
}
//在某个main方法中
new B(){
@override
public void a1(){}
}.a1();
- 在匿名内部类当中,使用的变量是不可以被改变过的。
结语
关于内部类,以上就是今天的内容,本文仅仅简单介绍了一下。
这篇博客如果对你有帮助,给博主一个免费的点赞以示鼓励,欢迎各位