匿名内部类
匿名内部类是啥
简单来说没得名字的内部类,叫匿名内部类
匿名内部类怎么使用呢
前提
- 需要一个类/接口,这里的类可以为具体类也可以是抽象类
格式
new 类名/接口(){
重写方法;
};
-
new intger(){ public void show(){ } };
如何实现呢
创建一个接口
public interface inter(){
void show();
}
创建一个实现类
public class testDemo {
public void method(){
new inter(){
//重写方法
public void show(){
System.out.println("匿名内部类");
}
};
}
}
创建一个测试类
- 需要创建一个实现类的对象
public class test{
public static void main(String[] args){
testDemo td = new testDemo();
td.method();
}
}
运行如下:
System.out.println("匿名内部类");
这个输出语句没有因为我们没有调用**show();**方法。
怎么调用呢
说明:匿名内部本质是一个继承了该类或者实现了该接口的子类匿名对象。所以可以用对象调用方法
new inter(){
//重写方法
public void show(){
System.out.println("匿名内部类");
}
}.show();
运行如下
多态的形式去实现
实现类的对象,使用多态
public class testDemo {
public void method(){
interi = new inter(){
//重写方法
public void show(){
System.out.println("匿名内部类");
}
};
i.show();
i.show();
}
}
运行如下:
练习
创建一个接口,定义两个方法
public interface inter{
void show();
void test();
}
创建一个接口操作类
public class jumppingOperator{
public void method(inter inter){
inter.show();
inter.test();
}
}
创建一个测试类
public class jumppingDemo{
public static void main(String[] args){
jumppingOperator jo = new jumppingOperator();
jo.method(new inter(){
public void show(){
System.out.println("玩");
}
public void test(){
System.out.prinln("看");
}
});
}
}
运行如下:
可以多重使用
jo.method(new inter() {
@Override
public void show() {
System.out.println("玩");
}
@Override
public void test() {
System.out.println("看");
}
});
jo.method(new inter() {
@Override
public void show() {
System.out.println("我");
}
@Override
public void test() {
System.out.println("你");
}
});
运行如下: