匿名内部类(相当于此类没有名字):
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);
}
}