五分钟弄懂匿名内部类——Java学习笔记

匿名内部类:
本质:匿名内部类本质就是一个继承父类的匿名子类的对象(一个类的子类对象)
作用:简化代码

格式:
	new 类名/接口名(){
	    重写抽象方法
	}

现在我们有一个Person类。

class abstract Person {
       public abstract void eat();

}

需求:执行Person类的eat方法
操作步骤:
1.创建一个子类继承Person类
2.在子类中重写eat方法
3.创建子类对象
4.使用子类对象调用eat方法

//创建一个子类继承Person类
class Student extends Person {
	//重写方法
	@Override
	public void eat() {
    	   System.out.println("学生吃学生餐");
	}
}
//创建一个测试类
public class Test {
	public static void main(String[] args) {
		//创建子类对象
		Person student = new Student;
		//调用eat方法
		student.eat();
	}
}

我这么懒的人,这样写的代码太多了,已经没有元气继续敲代码了。
有没有更简单的办法呢?
现在再来看操作的前三步,我们的目的是为了创建一个子类对象。
匿名内部类的本质是一个类的子类对象。
前三步是不是可以浓缩成一步,直接用匿名内部类就行呀!
我可真是个小天才呢~

//创建一个测试类
public class Test {
	public static void main(String[] args) {
		//创建Person的匿名内部类对象
		Person student = new Person{
		  @Override
		  public void eat() {
    	            System.out.println("学生吃学生餐");
	         }
		};//这里的分号不要忘记咯。
		//调用eat方法
		student.eat();
	}
}

总结一下:
匿名只是把名字隐藏,在案例中,就是将Student类的名字被隐藏了。
Student做的事情,重写eat方法,在匿名内部类也做了。
所以,当我们想得到一个类的子类对象时,直接创建这个对象的匿名内部类就可以啦。
同理,接口也是一样的方法。

猜你喜欢

转载自blog.csdn.net/LinKin_Sheep/article/details/109313760