说说Java中什么是匿名内部类?并举例说明匿名内部类该如何使用。
时间: 2024-06-14 20:03:21 浏览: 16
Java中的匿名内部类是一种没有名字的局部内部类,它可以在创建对象的同时定义类的实现。通常情况下,我们需要先定义一个类,然后再创建该类的对象。但是使用匿名内部类,可以在创建对象的同时定义类的实现,从而简化代码。匿名内部类通常用于实现接口或继承抽象类。
以下是一个使用匿名内部类实现接口的例子:
```java
public interface MyInterface {
void sayHello();
}
public class Main {
public static void main(String[] args) {
MyInterface myInterface = new MyInterface() {
@Override
public void sayHello() {
System.out.println("Hello World!");
}
};
myInterface.sayHello(); // 输出:Hello World!
}
}
```
在上面的例子中,我们定义了一个接口MyInterface,然后使用匿名内部类实现了该接口,并在创建对象的同时定义了类的实现。最后,我们调用了sayHello方法,输出了“Hello World!”。
相关问题
java中匿名内部类是什么
Java中的匿名内部类是一种没有类名的内部类,它可以在声明它的方法或代码块内部实现一个接口或继承一个类,并且可以扩展该类的行为。与普通的内部类不同,匿名内部类没有类名,它的实例是通过实现一个接口或者继承一个类而创建的。需要注意的是,匿名内部类只能在声明它的方法或代码块内部使用,因为它没有类名。此外,匿名内部类不能定义构造函数,因为它没有类名来作为构造函数名。以下是一个实现Runnable接口的匿名内部类的例子:
```java
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("This is a thread created by anonymous inner class.");
}
});
thread.start();
```
java什么是匿名内部类
在Java中,匿名内部类是指没有名字的内部类。它通常被用于创建一个实现某个接口或继承某个类的临时类。通过匿名内部类,我们可以在不创建具体的实现类的情况下直接实现接口中的方法或重写父类中的方法。匿名内部类在内存中有一个系统设定的名字,并且只能在创建它的地方使用。
下面是一个使用匿名内部类实现接口的例子:
```java
public class Interface01 {
public static void main(String[] args) {
A a = new A() {
@Override
public void eat() {
System.out.println("正在调用eat方法");
}
public void drink(){
System.out.println("正在调用drink方法");
}
};
a.eat();
a.drink();
System.out.println(a.getClass()); //获取类名
}
}
interface A{
public void eat();
public void drink();
}
```
输出结果:
```
正在调用eat方法
正在调用drink方法
class com.interface_.Interface01$1
```
可以看到,我们在匿名内部类中实现了接口A的eat()方法,并添加了一个额外的drink()方法。
相比之下,如果不使用匿名内部类,我们需要先创建一个具体的实现类,然后再调用接口的方法:
```java
public class Interface01 {
public static void main(String[] args) {
B b = new B();
f(b);
}
public static void f(A a){
a.eat();
}
}
interface A{
public void eat();
}
class B implements A{
@Override
public void eat() {
System.out.println("正在调用eat方法");
}
}
```
输出结果:
```
正在调用eat方法
```
可以看到,这种方式需要额外定义一个具体的实现类B,并且需要在调用方法时传递B的实例对象。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)