第二十二条:优先考虑静态成员类

嵌套类是指被定义在另一个类的内部的类。

嵌套类存在的目的应该只是为了它的外围类提供服务。如果嵌套类将来有可能会用于其他的某个环境,它就应该是顶层类。

嵌套类有四种:静态成员类,非静态成员类,匿名类,局部类。除了第一种,其他三种称为内部类。

静态成员类是最简单的一种嵌套类。最好把它看做是普通的类,只是碰巧被声明在另一个类的内部而已。

从语法上来讲,静态成员类和非静态成员类之间唯一的区别是,静态成员类的声明中包含修饰符static。但是静态成员类和非静态成员类之间有

很大不同。非静态成员类的实例方法内部,可以调用外围类实例(宿主)的方法,或者利用修饰过的this构造获得外围类实例(宿主)的引用。

静态成员类的实例可以独立于它的外围类的实例之外独立存在。

非静态成员类的实例不能独立于它的外围类的实例(宿主)独立存在。

当非静态成员类的实例被创建的时候,它和外围实例之间的关联关系也随之被建立起来,而且这种关联关系以后不能被修改。通常情况下,

当在外围类的某个实例方法的内部调用非静态成员类的构造器时,这种关联关系被自动建立起来。

如果声明成员类不需要访问外围实例,就始终要把static修饰符放在它的声明中。

匿名类不同于Java语言中的其他任何语法单元。匿名内部类没有名字,它不是外围类的一个成员,它并不与其他的成员一起被声明,而是在

使用的同时被声明和实例化。匿名类可以出现在代码中任何允许存在表达式的地方。匿名类的适用性受到诸多的限制。除了在它们被声明的时候

之外,是无法将它们实例化的。你无法声明一个匿名类来实现多个接口,或者继承一个类。匿名类的客户端无法调用这个匿名类中的任何方法。

由于匿名类出现在表达式中,它们,它们必须保持简短-----大约10行或者更少些------否则会影响程序的可读性。

匿名类的一种常用用法是动态的创建 函数对象。

匿名类的另一种常见用法是创建 过程对象。

原文地址:https://www.cnblogs.com/wangliyue/p/4468962.html