匿名
2018-08-29 本文已影响4人
张轻舟
匿名内部类
匿名内部类是局部内部类的一种特殊形式,也就是没有变量名指向这个类的实例,而且具体的类实现会写在这个内部类里面。
注意:匿名类必须继承一个父类或实现一个接口。
不使用匿名内部类来实现抽象方法:
abstract class Person { public abstract void eat(); }
class Child extends Person { public void eat() { System.out.println("eat something"); } }
public class Demo { public static void main(String[] args) { Person p = new Child(); p.eat(); } }
运行结果:
eat something
可以看到,我们用Child继承了Person类,然后实现了Child的一个实例,将其向上转型为Person类的引用。但是,如果此处的Child类只使用一次,那么将其编写为独立的一个类岂不是很麻烦?
这个时候就引入了匿名内部类。使用匿名内部类实现:
abstract class Person { public abstract void eat(); }
public class Demo { public static void main(String[] args){ // 继承 Person 类 new Person()
{ public void eat() { System.out.println("eat something"); } }.eat(); } }
可以看到,匿名类继承了 Person 类并在大括号中实现了抽象类的方法。
内部类的语法比较复杂,实际开发中也较少用