内部类概述
什么是内部类?
在类的内部又定义了一个新的类。被称为内部类。
内部类的分类:
静态内部类:类似于静态变量
实例内部类:类似于实例变量
局部内部类:类似于局部变量
public class ClassTest {
//这些类在类的内部,所以被称为内部类
//静态内部类
static class Inner1 {
}
//实例内部类
class Inner2 {
}
public void test() {
//局部内部类
class Inner3 {
}
}
}
匿名内部类是局部内部类的一种,因为该类没有名字,所以称为匿名内部类。
public class InnerTest {
public static void main(String[] args) {
MyMath me = new MyMath();
//因为接口不能new对象,所以要写一个类来实现接口
ComTest com = new ComTest();
//调用方法时需要三个参数
me.mysum(com, 100, 200);//300
}
}
//Compute接口
interface Compute {
int sum(int a, int b);
}
//此类实现接口
class ComTest implements Compute {
@Override
public int sum(int a, int b) {
return a + b;
}
}
//MyMath类
class MyMath {
//求和的方法,有三个参数
public void mysum(Compute c, int x, int y) {
int result = x + y;
System.out.println(result);
}
}
当使用匿名内部类时,不需要单独写一个类来实现接口
me.mysum(new Compute() {
@Override
public int sum(int a, int b) {
return a+b;
}
}, 100, 200);
缺点:
可读性太差。
因为类没有名字,没有办法重复使用。