什么是匿名内部类?
没有名字的局部内部类,也叫做匿名子类对象
匿名内部类的定义格式?
new 类名/接口名() {
//重写的方法
//自定义的方法
};
new Person() {
public void sleep(){
System.out.println("睡觉");
}
};
我们什么时候可以使用匿名子类对象?
当一个方法的形参是接口或者抽象类的时候,我们就可以选择使用匿名子类对象
interface Inter {
public abstract void print();
}
class Demo01 {
public static void main(String[] args) {
show(new Inter() {
public void print() {
System.out.println("哈哈");
}
});
}
public static void show(Inter inter) {
Inter inter = new Inter() {
public void print() {
System.out.println("在吗");
}
};
inter.print();
}
}
public class Demo02 {
public static void main(String[] args) {
new Fu() {
//方法的重写
public void show(Inter inter) {
inter.print();
}
}.show(new Inter() {
//方法的重写
public void print() {
System.out.println("哈哈");
}
});
}
}
abstract class Fu {
public abstract void show(Inter inter);
}
interface Inter {
public abstract void print();
}
public class Demo03 {
public static void main(String[] args) {
Tool.getInstance().show();
}
}
interface Inter {
public abstract void show();
}
class Tool {
public static Inter getInstance() {
return new Inter() {
public void show() {
System.out.println("哈哈");
}
};
}
}