[code]//匿名内部类
//匿名内部类
interface Inter
{
void show();
}
class Outer
{
//补齐代码;通过匿名内部类
public static Inter method(){
return new Inter(){
//因为接口中方法的默认类型时public abstract void show();
//所以这里必须用public 进行修饰复写
public void show(){
System.out.println("匿名内部类");
}
};
}
}
class InnerDemo
{
public static void main(String[] args)
{ //分析因为Outer可以直接调用method()方法说明method()方法是静态的
//因为Otuter.method()可以调用show()方法;说明method()方法返回的是一个对象
//因为返回的对象调用的show()方法定义在Inter接口中,说明返回的对象继承了Inner接口
//因为要使用匿名内部类,只能用多态,父类引用指向之类对象,所以method()方法的返回值是Inner
Outer.method().show();
//创建一个方法function(),不能创建对象,使用该方法
new Object(){
public void function(){
System.out.println("多态:父类引用指向子类对象。"+
"而所有的类都是来自一个超类:Object类,"+
"所以所有的实例对象都可以用Object引用来指向");
}
}.function();
//调用run方法,使用匿名内部类
//因为main方法是静态的所以run方法也必须是静态的
run(new Inter(){
public void show(){
System.out.println("这一切都是你自己的选择!");
}
});
}
public static void run(Inter in){
in.show();
}
}
|
|