在【Java学习笔记之二十五】初步认知Java内部类中对匿名内部类做了一个简单的介绍,但是内部类还存在很多其他细节问题,所以就衍生出这篇博客。在这篇博客中你可以了解到匿名内部类的使用、匿名内部类要注意的事项、如何初始化匿名内部类、匿名内部类使用的形参为何要为final。
匿名内部类由于没有名字,所以它的创建方式有点儿奇怪。创建格式如下:
new 父类构造器(参数列表)|实现接口()
{ //匿名内部类的类体部分 }
在这里我们看到使用匿名内部类我们必须要继承一个父类或者实现一个接口,当然也仅能只继承一个父类或者实现一个接口。同时它也是没有class关键字,这是因为匿名内部类是直接使用new来生成一个对象的引用。当然这个引用是隐式的。
1 public abstract class Bird { 2 private String name; 3 4 public String getName() { 5 return name; 6 } 7 8 public void setName(String name) { 9 this.name = name; 10 } 11 12 public abstract int fly(); 13 } 14 15 public class Test { 16 17 public void test(Bird bird){ 18 System.out.println(bird.getName() + "能够飞 " + bird.fly() + "米"); 19 } 20 21 public static void main(String[] args) { 22 Test test = new Test(); 23 test.test(new Bird() { 24 25 public int fly() { 26 return 10000; 27 } 28 29 public String getName() { 30 return "大雁"; 31 }