匿名内部类(相当于此类没有名字):
1.什么是内部类:在类的内部又定义了一个新的类
2.内部类的分类:
静态内部类:类似静态变量
实例内部类:类似实例变量
局部内部类:类似局部变量
3.使用内部类编写的代码,可读性很差,能不用尽量不用
4.匿名内部类是局部内部类中的一种,因为这个类没有名字而得名,叫匿名内部类
5.不建议使用匿名内部类:因为一个类没有名字,就意味着没有办法重复使用,另外代码会太乱,可读性就会很差
6.匿名内部类的特征:new 接口名(){} 后面的{} 代表了对接口的实现
代码演示:
import java.util.Objects;/**/
class Test01{//静态内部类static class Inner1{}//实例内部类class Inner2{}public void doSome(){//局部内部类class Inner3{}}public void doOther(){//外面的方法访问不了上面的局部内部类,访问实例内部类的时候需要new[但是我们一般很少这样去使用]new Test01().new Inner2();}//main方法的入口public static void main(String[] args){//调用Math中的mySum方法Math math=new Math();//这样写代码,表示这个类名是有的,类名是ComputeImpl//math.mySum(new ComputeImpl() ,100,100);//使用匿名内部类,这个{}就代表对这个接口的实现,表示这个ComputeImpl这个类没名字了math.mySum(new Compute(){public int sum(int a,int b) {return a + b;}} ,100,100);}
}//负责计算的接口
interface Compute{//抽象方法int sum(int a,int b);
}
/*
//你会自动在这里编写一个Compute接口的实现类
class ComputeImpl implements Compute{public int sum(int a,int b){return a+b;}
}
*///数学类
class Math{//数学求和的方法public void mySum(Compute compute,int x,int y){int retValue=compute.sum(x,y);System.out.println(x+"x"+y+"y"+"="+retValue);}
}