匿名内部类----java
匿名内部类就是内部类的简化写法,是一种特殊的局部内部类。
前提:存在一个类或者接口,这里的类可以是具体的类也可以是抽象类。
本质是:一个继承了该类或者实现该接口的子类匿名对象。
适合那种只需要创建一次对象的类。
Comparable:内部比较器 public classStudent implements Comparable{}内部比较器只能有一个,一般采用最经常使用的比较规则。
Comparator:外部比较器 可指定多个 不需要Student实现该接口,而是定义专门的类、
总结:
1、匿名内部类可以实现一个接口,也可以继承一个类(可以是抽象类)。
2、匿名内部类只能实现一个接口,而不是多个。
3、必须实现所有方法,匿名内部类不能是抽象类。
4、匿名内部类不可能有构造方法,因为类是匿名的。
5、匿名内部类没有访问控制符。
6、如果想实现构造方法的一些初始化功能,可可以通过代码块实现。
7、如果要访问所在方法的局部变量,该变量需要使用final修饰。
内部类的作用:
1、内部类提供了更小的封装。只能让外部类直接访问,不允许同一个包中的其他类直接访问。
2、内部类可以访问外部类的私有属性,内部列被当成其外部类的成员。但外部类不能访问内部类的内部属性。
3、接口只解决了多重继承的部分问题,而内部类使得多重继承的解决方案变的更加完整。
4、用匿名内部类实现回调功能,我们通俗的讲解就是说在Java中,通常就是编写一个接口,然后你来实现这个接口,然后把这个接口
的一个对象作为参数的形式传到另一个程序中,然后通过接口调用你的方法,匿名内部列就可以很好地展现量这一种回调功能。
内部类使用场合:
1、由于内部类提供了更好的封装性,并且可以很方便的访问外部类的属性,所以,在只为外部类提供服务的情况下可以优先考虑使用内部类。
2、使用内部类间接实现多继承:每个内部类都能独立地继承一个类或者实现某些接口,所以无论外部类是否已经继承了某个类或者实现了某些
接口,对于内部列都没有任何影响。