package demo.oo;
interface Inter3 {
public abstract void show1();
public abstract void show2();
}
class Outer3 {
void method() {
new Inter3() {
public void show1() {
System.out.println("只能调用一个");
}
public void show2() {
System.out.println("只能调用一个2");
}
}.show1(); // 同上
//只能调用一个怎么办?
/*
class Inner implements Inter3 {
public void show1() {
}
public void show2() {
}
}
Inter3 in = new Inner();
in.show1();
in.show2();
*/
Inter3 in = new Inter3() { // Inter3 in = new Inner();多态. Inner相当于子类(匿名)同上
public void show1() {
System.out.println("匿名内部类被调用show1()");
}
public void show2() {
System.out.println("匿名内部类被调用show2()");
}
};
in.show1();
in.show2();
}
}
class AnonymousInnerClasses {
public static void main(String[] args) {
new Outer3().method();
System.out.println("--------------------------------");
show(new InnerImpl2());//传入接口实现类
show(new Inter3() { // 不超过三个。不能太多 //同上
public void show1() {
System.out.println("匿名内部类实现接口show1()");
}
public void show2() {
System.out.println("匿名内部类实现接口show2()");
}
});
}
static void show(Inter3 in) {
in.show1();
// in.show2();
}
}
/*
通常的使用场景之一:
当函数参数是接口类型时,而且接口中的方法不超过三个。
可以用匿名内部类作为实际参数进行传递
*/
class InnerImpl2 implements Inter3 {
public void show1() {
System.out.println("实现接口show1()");
}
public void show2() {
System.out.println("实现接口show2()");
}
}
内部类_匿名内部类作实际参数_方法内的匿名内部类
最新推荐文章于 2023-10-17 15:12:25 发布
这篇博客探讨了Java中匿名内部类如何实现接口,并展示了在方法参数为接口类型时,如何使用匿名内部类作为实际参数传递。通过示例代码解释了匿名内部类的创建和方法重写,以及在实际编程中的应用场景。
1468

被折叠的 条评论
为什么被折叠?



