1.理解
/*
匿名内部类:
就是内部类的简化写法
前提:存在一个类或者一个接口
这个类可以是具体类,也可以是抽象类
格式:
new 类名或接口名(){
重写方法;
};
本质是什么?
是一个继承了该类或该接口的子类匿名对象
*/
interface Inter {
public abstract void show();
public abstract void show2();
}
class Outer{
public void method(){
/*-
//一个方法
new Inter(){
public void show(){
System.out.println("show");
}
}.show();
*/
//多个方法
Inter i = new Inter(){
public void show(){
System.out.println("show");
}
public void show2(){
System.out.println("show2");
}
};
i.show();
i.show2();
}
}
class InterClassDemo5{
public static void main(String[] args){
Outer o = new Outer();
o.method();
}
}
2.开发中的使用
优点:使用后,对象立刻被回收,不占内存
/*
匿名内部类在开发中的应用
*/
interface Person{
public abstract void Study();
}
class PersonDemo{
//接口作为形势参数
//其实这里是需要实现了该接口的子类对象
public void method(Person p){
p.Study();
}
}
/*
class Student implements Person{
public void Study(){
System.out.println("好好学习,天天向上");
}
}
*/
class InterClassDemo6{
public static void main(String[] args){
//PersonDemo pd = new PersonDemo();
//Person p = new Student();
//pd.method(p);
PersonDemo pd = new PersonDemo();
pd.method(new Person(){
public void Study(){
System.out.println("好好学习,天天向上2");
}
});
}
}