局部内部类
局部内部类是在iyge方法中定义的内部类,它的可见范围是当前方法。局部内部类不能被访问控制修饰符和static修饰符修饰。不能包含静态成员
public class A {
public void method() {
class B{
int v1;
int v2;
class C{
int v3;
}
}
B b = new B();
B.C c = b.new C();
}
}
匿名类
匿名类是不能有名字的类,它们不能被引用,只能在创建时用 new 语句来声明它们。
lass outerClass {
// 定义一个匿名类
object1 = new Type(parameterList) {
// 匿名类代码
};
}
匿名类继承一个父类
以下实例中,创建了 Polygon 类,该类只有一个方法 display(),AnonymousDemo 类继承了 Polygon 类并重写了 Polygon 类的 display() 方法:
class Polygon {
public void display() {
System.out.println("在 Polygon 类内部");
}
}
class AnonymousDemo {
public void createClass() {
// 创建的匿名类继承了 Polygon 类
Polygon p1 = new Polygon() {
public void display() {
System.out.println("在匿名类内部。");
}
};
p1.display();
}
}
测试类:
class Main {
public static void main(String[] args) {
AnonymousDemo an = new AnonymousDemo();
an.createClass();
}
}
执行以上代码,匿名类的对象 p1 会被创建,该对象会调用匿名类的 display() 方法,输出结果为:
在匿名类内部。
匿名类实现一个接口
以下实例创建的匿名类实现了 Polygon 接口:
interface Polygon {
public void display();
}
class AnonymousDemo {
public void createClass() {
// 匿名类实现一个接口
Polygon p1 = new Polygon() {
public void display() {
System.out.println("在匿名类内部。");
}
};
p1.display();
}
}
测试类:
class Main {
public static void main(String[] args) {
AnonymousDemo an = new AnonymousDemo();
an.createClass();
}
}
输出结果为:
在匿名类内部。