package primarytest;
/*
匿名内部类:
语法:
new 外部类名或者接口()
{
//重写父类方法(一般是抽象的方法)
};
使用: 简化书写,参数传递(父类或者接口中的方法比较少时用)
自我理解:匿名内部类是对父类或者接口的匿名实现,同时又得到
一个实现子类的对象。只不过这个子类和对象没有名字,是匿名的
可以用父类的引用指向这个对象,去调用它实现的父类的同名的方法。
*/
public class InnerClassOfNiMing
{
public static void main(String[] args)
{
//匿名内部类
new Outertest()//在声明对象时对其进行了重写,就如创建一个子类及其对象一样,它是一步合成的
{
public void show()
{
System.out.println("匿名内部类!");
}
}.show(); //new ---- ;是一条语句
/*
匿名内部类就如一个对象,只不过这个对象
的类的实体在调用中才刚定义。
也可以理解为匿名重写!
常用在匿名重写传参,在Swing组件中添加
事件监听器就常这样干。
*/
//匿名类作为参数传递
new NiM().myshow(new Outertest()
{
public void show()//重写Outertest接口的show方法
{
System.out.println("匿名内部类!");
}
});//这是一个语句
}
}
interface Outertest//接口
{
void show();//抽象方法,默认:public abstract
}
class NiM
{
public void myshow(Outertest ot)//参数设置成接口
{
ot.show();
//调用接口中的抽象方法,当子类实现了接口时,调用的是相应的实现类的对应的方法
}
}
|