局部匿名内部类 局部匿名内部类:又叫匿名类!
匿名类不能有构造器 1 匿名内部类的语法把一个类的定义放到new语句中去了。 一个东西没名字,就表示它只能被使用一次! 一个类要是没有名字,那么这个类只能被使用一次! 问一下自己:定义一个类什么目的?为了创建这个类的对象! 也就是说,因为一个匿名类只能被使用一次,那么我们就需要在这时创建它的对象! 所以匿名内部类必须放到new语句中使用。 new 接口或父类名() {类体} new A(); à new A() {}; new A():创建A类的对象。 A a = new A() {}:创建A类的子类对象,而这个子类也是刚刚创建的。这个子类没有名字!虽然不知道这个子类叫什么名字,但可以使用A类的引用来指向它! 也就是说,我们只能使用他父类的引用来指向它,那么这个引用也就只能调用A类中存在的方法,而不能再去调用子类独有的方法。 这说明,匿名内部中,都是在重写父类方法,如果写独有方法,也没能被调用,那么你写它干什么。 2 匿名内部类只能使用一次 只能被使用一次,对类的使用也就一种方式,创建这个类的对象! 3 匿名内部类必须指定父类或者指定实现的接口new 父类或接口(){} 必须指定父类或者实现的接口。 匿名内部类与正常类不一样,它只能指定一个要继承的类或者是指定一个要实现的接口。两者不能兼得! 实现接口,也只能实现1个。要实现接口,就不能指定父类! 4 匿名内部类不能同时继承和实现匿名内部类与正常类不一样,它只能指定一个要继承的类或者是指定一个要实现的接口。两者不能兼得! 实现接口,也只能实现1个。要实现接口,就不能指定父类! 5 匿名内部类最多实现一个接口实现接口,也只能实现1个。要实现接口,就不能指定父类! 6 匿名内部类的实例块new A() { {//构造代码块}//代替了构造器的工作 } |