接口或者抽象类的匿名对象,都可以作为参数传递,达到调用方法的目的:
具体实现代码如下:
public class Parameter {
public static void main(String[] args) {
display(new Test() {//把匿名内部类作为参数传递,可以直接重写抽象类中的方法;
@Override
public void show() {
System.out.println("重写过的show方法:");
}
});
System.out.println("-----------------------------------");
Test2 test2= new Test2(){ //可以利用多态,将匿名对象指向test2;
@Override
public void show1() {
System.out.println("重写过的show1方法:");
}
};
display2(test2); //通过参数传递,也可以达到调用目的;
}
public static void display(Test test) {//设置为静态方法,进入主函数后就可以直接调用了;
test.show();
}
public static void display2(Test2 test2) {
test2.show1();
}
}
abstract class Test {//抽象类;
public abstract void show();
}
interface Test2 {//接口类;
public abstract void show1();
}
同样,匿名对象也可以作为参数返回:
具体实现如下:
public class Parameter {
public static void main(String[] args) {
Test test=getTest();//接收返回回来的抽象类匿名对象,并调用重写过的方法;
test.show();
System.out.println("================================");
Test2 test2=getTest2();//接收返回回来的接口类匿名对象,并调用重写过的方法;
test2.show1();
}
public static Test getTest(){//创建方法,将抽象类匿名对象作为参数返回;
Test test=new Test() {
@Override
public void show() {
System.out.println("重写过的show方法");
}
};
return test;
}
public static Test2 getTest2(){//创建方法,将接口类匿名对象作为参数返回;
Test2 test2=new Test2() {
@Override
public void show1() {
System.out.println("重写过的show1方法");
}
};
return test2;
}
}
abstract class Test {//抽象类;
public abstract void show();
}
interface Test2 {//接口类;
public abstract void show1();
}