什么是内部类?
- 在类的内部又定义了一个新的类
内部类的分类
- 静态内部类:类似于静态变量
- 实例内部类:类似于实例变量
- 局部内部类:类似于局部变量
匿名内部类
- 是局部内部类的一种
- 不建议用匿名内部类,缺点:太复杂可读性差;类没有名字不能重复使用
//负责计算的接口
interface Compute
{
//抽象方法
int sum(int a,int b);
}
//不用匿名类时,接口的实现类
/*
class ComputeImpl implements Compute
{
//对方法的实现
public int sum(int a,int b){
return a+b;
}
}
*/
//数学类
class MyMath
{
//数学求和方法
public void mySum(Compute c,int x,int y){
int t=c.sum(x,y);
System.out.println(t);
}
}
public class Test
{
public static void main(String[] args){
//调用MyMath中的mySum方法
MyMath mm=new MyMath();
/*
//不用匿名内部类时,多态
Compute c=new ComputeImpl();
mm.mySum(c,100,200);
//上述两行可以合并为
mm.mySum(new ComputeImpl(),100,200);
*/
//使用匿名内部类,表示这个ComputeImpl类没有名字了
//表面上看好像是接口可以直接new了,实际上并不是
//后面的{}代表了对接口的实现
mm.mySum(new Compute(){
public int sum(int a,int b){
return a+b;
}
},200,300)
}
}