* 匿名内部类, 就是内部类的简写形式。
*
*
必须有前提:
*
内部类必须继承或者实现一个外部类或者接口。
* 匿名内部类其实就是一个子类对象。
*
* 格式:new 父类or接口名 {}
*/
interface Inter
{
void show1();
void show2();
}
class Outer1
{
public void method()
{
/*
* 通常的使用场景之一:
*
当函数参数是接口类型时,而且接口中的方法不超过3个*
可以使用匿名内部类作为实际参数进行传递。*/
Inter inter = new Inter()
{
@Override
public void show1()
{
// TODO Auto-generated method stub
System.out.println("实现show1()");
}
@Override
public void show2()
{
// TODO Auto-generated method stub
System.out.println("实现show2()");
}
};
/*
* 编译看左边
* 运行看右边
*/
inter.show1();
inter.show2();
}
}
class Outer2
{
public void show3(Inter inter)
{
inter.show1();
inter.show2();
}
//调用show3()函数时 向里边传递一个匿名内部类 就是 不想再去定义一个类 然后 去继承这个借口
public void show4()
{
show3
( new Inter()
{
@Override
public void show1()
{
// TODO Auto-generated method stub
}
@Override
public void show2()
{
// TODO Auto-generated method stub
}
}
);
}
}
//注意事项***********************************
class Outer3
{
void method()
{
Object obj = new Object()
{
public void show()
{
System.out.println("内部类的函数");
}
};
obj.show();//错误使用 ----------以为匿名内部类这个子类对象被转成为了Object类型
//这样就不能在使用子类特有的 方法了。
}
}
练习题目
版权声明:本文为博主原创文章,未经博主允许不得转载。