1.匿名内部类:匿名类是指没有类名的内部类,必须在创建时使用 new 语句来声明类。匿名类的两种实现:继承一个类,重写其方法;实现一个接口(或多个),实现其方法。匿名类的特点:匿名类可以访问外部类的所有成员;匿名类中允许使用非静态代码块进行成员初始化操作;匿名类的非静态代码块会在父类的构造方法之后被执行。
public class Test8 {
void a() {
System.out.println("a()");
}
public static class A {
private void a() {
Test8 t = new Test8() {
void a() {
System.out.println("匿名类a()");
}
};
t.a();
}
public static void main(String[] args) {
A a1 = new A();
a1.a();
}
}
}
2.再访工厂方法:
interface A2 {
void a();
void b();
}
interface B2 {
A2 getA();
}
class C2 implements A2 {
@Override
public void a() {
System.out.println("a()");
}
@Override
public void b() {
System.out.println("b()");
}
public static B2 b2 = new B2() {
@Override
public A2 getA() {
return new C2();
}
};
}
public class Test7 {
public static void test(B2 b3) {
A2 a2 = b3.getA();
a2.a();
a2.b();
}
public static void main(String[] args) {
test(C2.b2);
}
}
3.嵌套类:在另外一个类中定义一个类,这样的类被称为嵌套类。如果不需要内部类对象与外部类对象之间有联系,将内部类声明为static。创建嵌套类的对象,不需要外部类的对象。嵌套类的对象只能访问外部类的静态对象。嵌套类可以不实例化外部类,可以直接使用 外部类名.静态嵌套类名 访问。
public class Test9 {
static int i = 10;
static class A {
static void a() {
System.out.println(i);
}
public static void main(String[] args) {
Test9.A.a();
}
}
}
本文介绍了Java编程中的三种重要概念:匿名内部类,通过实例展示了如何重写父类方法或实现接口;工厂方法再探,通过接口和内部类的结合,演示了如何动态创建对象;以及嵌套类的应用,强调了静态嵌套类的特性,即无需外部类对象即可直接创建。这些内容有助于深入理解Java的类和对象创建机制。
1066

被折叠的 条评论
为什么被折叠?



