马士兵java架构师

您现在的位置是:java学习笔记 >

java学习笔记

java匿名内部类主要原则

2023-11-11 18:44:38java学习笔记 本文浏览次数:1 百度已收录

本 文 目 录

Java匿名内部类的主要原则是隐式性和简洁性。它们允许我们在不使用显式类名的情况下创建类,从而使代码更简洁、更清晰。

关于Java匿名内部类隐式性和简洁性的代码举例

假设我们有一个接口Greeting

public interface Greeting {
    void sayHello();
}

通常,我们需要创建一个实现该接口的类:

public class HelloGreeting implements Greeting {
    @Override
    public void sayHello() {
        System.out.println("Hello!");
    }
}

然后,我们可以在代码中使用这个实现类:

public class GreetingMain {
    public static void main(String[] args) {
        Greeting greeting = new HelloGreeting();
        greeting.sayHello(); // 输出 "Hello!"
    }
}

但是,使用匿名内部类,我们可以将实现类和使用类合并在一起,使代码更简洁。以下是使用匿名内部类的代码:

public class GreetingMain {
    public static void main(String[] args) {
        // 在这里直接创建一个实现了Greeting接口的匿名内部类
        Greeting greeting = new Greeting() {
            @Override
            public void sayHello() {
                System.out.println("Hello from anonymous class!");
            }
        };
        greeting.sayHello(); // 输出 "Hello from anonymous class!"
    }
}

在这个例子中,我们没有显式创建一个实现Greeting接口的类,而是直接在需要使用它的地方创建了一个匿名内部类。这使得代码更简洁,不需要额外的类定义。同时,这个匿名内部类还可以直接访问包含它的外部类的成员变量和方法(即使是私有的),这也是匿名内部类的一个优势。

以下是对代码的逐行解释

public class GreetingMain {

这一行定义了一个名为GreetingMain的公共类。在Java中,每一个public的类都要定义在一个与类名相同的文件中,所以这个文件应该被命名为GreetingMain.java

public static void main(String[] args) {

这一行定义了程序的main方法,它是Java应用程序的入口点。当你运行一个Java应用程序时,它是首先被执行的方法。

Greeting greeting = new Greeting() {

这里我们声明了一个名为greetingGreeting类型的变量。然后我们使用new Greeting()开始创建一个新的Greeting对象。但注意,我们没有给出一个具体的类来实现Greeting,而是直接开始定义一个匿名内部类。

@Override
            public void sayHello() {

这部分是匿名内部类的核心。我们在这里覆盖了Greeting接口的sayHello方法。由于这是一个匿名内部类,所以我们没有为它提供一个名字,而是直接在创建它的地方定义它的行为。

System.out.println("Hello from anonymous class!");

在覆盖的sayHello方法中,我们打印了一条消息:"Hello from anonymous class!"。

}
        };

这两行代码结束了我们的匿名内部类的定义和对象的创建。

greeting.sayHello(); // 输出 "Hello from anonymous class!"

这里我们调用了greeting对象的sayHello方法,这将执行我们在匿名内部类中定义的打印语句,输出"Hello from anonymous class!"。

}
}

这两行代码分别结束了main方法和GreetingMain类的定义。