(22):优先考虑静态成员类

来源:互联网 发布:linux中查看文件内容 编辑:程序博客网 时间:2024/06/05 03:15
嵌套类是指被定义在另一个类的内部的类。
嵌套类存在的目的应该只是为了它的外围类提供服务。如果嵌套类将来有可能会用于其他的某个环境,它就应该是顶层类。
嵌套类有四种:静态成员类,非静态成员类,匿名类,局部类。除了第一种,其他三种称为内部类。
静态成员类是最简单的一种嵌套类。最好把它看做是普通的类,只是碰巧被声明在另一个类的内部而已。
从语法上来讲,静态成员类和非静态成员类之间唯一的区别是,静态成员类的声明中包含修饰符static。但是静态成员类和非静态成员类之间有很大不同。非静态成员类的实例方法内部,可以调用外围类实例(宿主)的方法,或者利用修饰过的this构造获得外围类实例(宿主)的引用。
静态成员类的实例可以独立于它的外围类的实例之外独立存在。
非静态成员类的实例不能独立于它的外围类的实例(宿主)独立存在。

当非静态成员类的实例被创建的时候,它和外围实例之间的关联关系也随之被建立起来,而且这种关联关系以后不能被修改。通常情况下,当在外围类的某个实例方法的内部调用非静态成员类的构造器时,这种关联关系被自动建立起来。如果声明成员类不需要访问外围实例,就始终要把static修饰符放在它的声明中。

如果一个嵌套类需要在单个方法之外仍然是可见的,或者他太长了,不适合方法内部,就应该使用成员类。如果成员类的每个实例都需要一个指向其外围实例的引用,就要把成员类做成非静态的;否则就做成静态的。假设这个嵌套类属于一个方法的内部,如果你需要在一个地方创建实例,并且已经有了一个预置的类型可以说明这个类的特征,就把他做成匿名类;否则,就做成局部类。

0 0
原创粉丝点击