Java中的匿名内部类方法
发布时间:2023-06-05 18:44:02
Java中的匿名内部类是一种特殊的类,它没有名字,而是在创建时直接定义。匿名内部类常用于创建一个只有一次使用的对象,通常是作为函数参数传递或赋值给变量。匿名内部类可以是接口、抽象类或具体类的子类,也可以实现多个接口。
匿名内部类的语法格式如下:
new 父类构造器( 参数列表 ) / 实现接口 {
//匿名内部类的类体部分
};
其中,父类构造器和实现接口是可选的。如果是实现接口,则需要在类体部分实现接口的抽象方法。下面是一个匿名内部类的示例:
interface Animal {
void makeSound();
}
public class Main {
public static void main(String[] args) {
Animal cat = new Animal() {
public void makeSound() {
System.out.println("Meow");
}
};
cat.makeSound();
}
}
这个例子中,我们定义了一个Animal接口,然后创建了一个实现该接口的匿名内部类。该匿名内部类重写了接口中的makeSound方法,并在其中输出了“Meow”。最后,我们通过cat对象调用了makeSound方法,输出了“Meow”。
匿名内部类的方法可以使用普通类的方法一样进行调用。例如,我们可以在匿名内部类中定义一个方法,然后通过对象调用该方法。下面是一个示例:
interface Animal {
void makeSound();
void sleep();
}
public class Main {
public static void main(String[] args) {
Animal cat = new Animal() {
public void makeSound() {
System.out.println("Meow");
}
public void sleep() {
System.out.println("Zzz");
}
public void play() {
System.out.println("Jump");
}
};
cat.makeSound();
cat.sleep();
// cat.play(); // 编译错误,因为play方法是Animal接口没有定义的方法
}
}
在这个例子中,我们为Animal接口定义了两个方法makeSound和sleep,并在匿名内部类中重写了这两个方法。同时,我们还定义了一个play方法,但由于该方法是Animal接口没有定义的方法,所以我们不能通过cat对象调用该方法。
总结来说,Java中的匿名内部类方法可以使用普通类的方法一样进行调用,我们可以在匿名内部类中定义并重写接口中的方法,也可以定义自己的方法。匿名内部类常用于创建一个只有一次使用的对象,例如在函数参数传递或赋值给变量时。匿名内部类可以是接口、抽象类或具体类的子类,也可以实现多个接口。
