作用:为了减少代码量
1基于抽象类的匿名内部类
/匿名内部类:在实例化对抽象类同时并重写抽象方法
Person person = new Person(){
@Override
public void eat() {
System.out.println("吃吃喝喝");
}
2.基于接口类的匿名内部类
new A(){
@Override
public void testA() {
System.out.println("哈哈");
}
}.testA();
真实开发的时候,一个方法参数是一个接口对象,不用再新建一个类去实现这个接口,直接方法中去new 接口
3.内部类
从字面意思来理解:在类的内部创建一个类,这个类叫内部类
class MemberDemo {
String name = "张三";
int age = 20;public void printf() {
System.out.println("打印着玩");
}
class Inner {//就是内部类在Inner这个类中可以访问外部类的属性和方法
public void test () {
printf();//打印着玩
System.out.println(age);//20
System.out.println(name);//李四
//如果访问外部特定的属性的时候: 类名.this.属性
//成员内部类的创建步骤:
//1.实例化外部类 类对象
MemberDemo memberDemo = new MemberDemo();
//2.实例化内部类对象,但是new得改为 外部对象.new
MemberDemo.Inner inner = memberDemo.new Inner();
inner.test();