gpt4 book ai didi

java - 匿名类在类声明中具有接口(interface)关键字

转载 作者:行者123 更新时间:2023-12-01 18:40:17 25 4
gpt4 key购买 nike

下面的示例是我在 Oracle 文档中看到的匿名类示例。但是他们如何在类 HelloWorldAnonymousClasses 中编写接口(interface) HelloWorld

public class HelloWorldAnonymousClasses {

interface HelloWorld {
public void greet();
public void greetSomeone(String someone);
}

public void sayHello() {

class EnglishGreeting implements HelloWorld {
String name = "world";
public void greet() {
greetSomeone("world");
}
public void greetSomeone(String someone) {
name = someone;
System.out.println("Hello " + name);
}
}

HelloWorld englishGreeting = new EnglishGreeting();

HelloWorld frenchGreeting = new HelloWorld() {
String name = "tout le monde";
public void greet() {
greetSomeone("tout le monde");
}
public void greetSomeone(String someone) {
name = someone;
System.out.println("Salut " + name);
}
};

HelloWorld spanishGreeting = new HelloWorld() {
String name = "mundo";
public void greet() {
greetSomeone("mundo");
}
public void greetSomeone(String someone) {
name = someone;
System.out.println("Hola, " + name);
}
};
englishGreeting.greet();
frenchGreeting.greetSomeone("Fred");
spanishGreeting.greet();
}

public static void main(String... args) {
HelloWorldAnonymousClasses myApp =
new HelloWorldAnonymousClasses();
myApp.sayHello();
}
}

最佳答案

接口(interface)可以匿名实现。这不是接口(interface)的实现,而是匿名子类中接口(interface)的实现。

接口(interface)本身不会被实例化。

有问题的行是这样的:

HelloWorld frenchGreeting = new HelloWorld() {

其中 HelloWorld 是一个接口(interface)。大括号已经表明这是一个匿名类。通过将其定义为 HelloWorld,您可以强制匿名类实现接口(interface)中定义的方法。

如果您指的是在类内部定义的接口(interface)本身:如果您希望仅为当前类定义接口(interface)而不将其暴露给其他对象,则可以在类内部定义它。

如果您想让它也可供外界使用,您必须将您的类和接口(interface)声明为 public 并使用 MyClass.MyInterface 访问它。

关于java - 匿名类在类声明中具有接口(interface)关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20193907/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com