192 匿名内部类
全称:匿名局部内部类,在方法里面定义的类
前提
存在一个类或者接口,可以是具体类也可以是抽象类
-
> 匿名内部类是一种对象,继承了类或者接口
本质
匿名内部类是一个继承了类或者实现了接口的子类匿名对象
-
格式
new 类名or接口名(){
重写方法
};
例如
new Inner(){
public void show(){
}
};
myInnerclass
itheima04
--------------------------------------------------------------
package itheima04E192;
public class Outer {
public void method(){
/*
new Inter(){
@Override
public void show() {
System.out.println("匿名局部内部类");
}
}.show();
//定义完匿名内部类,无需创建对象,调用下方法即可实例化
//匿名内部类调用方法,是在下花括号-分号 的中间,加上.方法名()
*/
//如何多次使用匿名内部类?——给它一个对象名,用对象名调用方法。但这样就不能再用直接在分号前加方法名的方式了,要用对象名.方法名的方法
Inter i = new Inter(){
@Override
public void show() {
System.out.println("匿名局部内部类");
}
};
i.show();
i.show();
}
}
--------------------------------------------------------------
package itheima04E192;
public interface Inter {
void show();
}
--------------------------------------------------------------
package itheima04E192;
public class OuterDemo {
public static void main(String[] args) {
Outer o = new Outer();
o.method();
}
}
193匿名内部类在开发中的使用
myInnerclass
itheima05
--------------------------------------------------------------
package itheima05E193;
public interface Jumpping {
void jump();
}
--------------------------------------------------------------
package itheima05E193;
public class JumppingDemo {
public static void main(String[] args) {
//创建JumppingOperator的对象并调用方法
JumppingOperator jo = new JumppingOperator();
/*
Jumpping j = new Zi();
jo.method(j);
*/
//可以不创建接口实现类即实例化接口,这需要在测试类里重写接口的方法
jo.method(new Jumpping() {
@Override
public void jump() {
System.out.println("--------");
System.out.println("193/无子类的接口实例化");
}
});
}
}
--------------------------------------------------------------
package itheima05E193;
public class JumppingOperator {
//创建接口操作类的对象,并调用jump方法
public void method(Jumpping j){
j.jump();
}
}
--------------------------------------------------------------
package itheima05E193;
public class Zi implements Jumpping{
@Override
public void jump() {
System.out.println("193/猫猫跳高");
}
}