接口能被匿名内部类实现
时间: 2023-11-18 21:04:31 浏览: 29
是的,接口可以被匿名内部类实现。匿名内部类是一种没有名字的内部类,可以在创建对象时直接实现接口并覆盖接口中的方法。例如:
```
interface MyInterface {
void doSomething();
}
public class MyClass {
public void doSomethingWithInterface(MyInterface myInterface) {
myInterface.doSomething();
}
public static void main(String[] args) {
MyClass myClass = new MyClass();
myClass.doSomethingWithInterface(new MyInterface() {
@Override
public void doSomething() {
System.out.println("Hello world!");
}
});
}
}
```
在上面的例子中,我们创建了一个没有名字的实现了 MyInterface 接口的匿名内部类,并且在 MyClass 类中使用了该匿名内部类的实例来调用 doSomething() 方法。
相关问题
java匿名内部类实现接口
以下是Java中使用匿名内部类实现接口的示例:
```java
public interface MyInterface {
void doSomething();
}
public class Main {
public static void main(String[] args) {
MyInterface myInterface = new MyInterface() {
@Override
public void doSomething() {
System.out.println("匿名内部类实现接口的方法");
}
};
myInterface.doSomething(); // 输出:匿名内部类实现接口的方法
}
}
```
在上面的示例中,我们定义了一个接口`MyInterface`,它只有一个方法`doSomething()`。然后,在`Main`类中,我们使用匿名内部类实现了这个接口,并重写了`doSomething()`方法。最后,我们创建了一个接口类型的变量`myInterface`,并将其初始化为匿名内部类的实例。通过调用`myInterface`的`doSomething()`方法,我们可以执行匿名内部类中实现的方法。
非匿名内部类不能实现接口
这个说法是不正确的。非匿名内部类是完全可以实现接口的。下面是一个示例代码:
```java
interface MyInterface {
void myMethod();
}
class MyClass {
private int x = 10;
public void createInner() {
// 实现 MyInterface 接口的非匿名内部类
class MyInner implements MyInterface {
public void myMethod() {
System.out.println("The value of x is " + x);
}
}
// 创建 MyInner 对象并调用 myMethod 方法
MyInner inner = new MyInner();
inner.myMethod();
}
}
public class Main {
public static void main(String[] args) {
MyClass outer = new MyClass();
outer.createInner();
}
}
```
在上面的代码中,我们定义了一个接口 `MyInterface`,然后在 `MyClass` 中定义了一个非匿名内部类 `MyInner`,该类实现了 `MyInterface` 接口。在 `createInner` 方法中,我们创建了 `MyInner` 的对象并调用了 `myMethod` 方法。这证明了非匿名内部类是可以实现接口的。