Outer类:
public class Outer {
int a = 5;
//普通内部类
class Inner{
int a=10;
//内部类中只能定义final型static,不能定义static
static final int m=10;
void showB(){
System.out.println(this.a);//内部类的属性
System.out.println(Outer.this.a);//访问外部类属性
}
}
//静态内部类
static class In{
//可定义普通静态变量
static int n=100;
void showC(){
System.out.println(n);
}
}
void f(){
//局部内部类
int a=40;
class Local{
void func(){
System.out.println(a);
}
}
new Local();
}
//内部接口
interface Intf{
}
}
test
public static void main(String[] args) {
Outer a = new Outer();
//创建对象时,必须先创建外部类对象,通过外部类对象调用内部类构造
Inner b = a.new Inner();
b.showB();
System.out.println(Inner.m);
//产生静态内部类
In i = new In();
i.showC();
}
匿名内部类:
产生匿名内部类的前提是必须有:父类或接口
特征:
- 在内部类内部如果访问外部的变量,则只可读取不能修改
- 内部类内部不能有静态方法
- 内部类中定义的属性在外部不能被访问
- 重点掌握如何定义匿名内部类