标签:
使用静态内部类提高封装性
Java中的嵌套类(Nested Class)分为两种:静态内部类(也叫静态嵌套类,Static Nested Class)和内部类(Inner Class)。本次主要看看静态内部类。什么是静态内部类呢?是内部类,并且是静态(static修饰)的即为静态内部类,只有在是静态内部类的情况下才能把static修饰符放在类前,其它任何时候static都是不能修饰类的。
静态内部类的形式很好理解,但是为什么需要静态内部类呢?那是因为静态内部类有两个优点:加强了类的封装和提高了代码的可读性,我们通过下面代码来解释这两个优点。
1 public class Person {
2 // 姓名
3 private String name;
4 // 家庭
5 private Home home;
6
7 public Person(String _name) {
8 name = _name;
9 }
10
11 /* home、name的setter和getter方法略 */
12
13 public static class Home {
14 // 家庭地址
15 private String address;
16 // 家庭电话
17 private String tel;
18
19 public Home(String _address, String _tel) {
20 address = _address;
21 tel = _tel;
22 }
23 /* address、tel的setter和getter方法略 */
24 }
25 }
其中,Person类中定义了一个静态内部类Home,它表示的意思是"人的家庭信息",由于Home类封装了家庭信息,不用再Person中再定义homeAddr,homeTel等属性,这就使封装性提高了。同时我们仅仅通过代码就可以分析出Person和Home之间的强关联关系,也就是说语义增强了,可读性提高了。所以在使用时就会非常清楚它表达的含义。
public static void main(String[] args) {
// 定义张三这个人
Person p = new Person("张三");
// 设置张三的家庭信息
p.setHome(new Home("北京", "010"));
}
定义张三这个人,然后通过Person.Home类设置张三的家庭信息,这是不是就和我们真是世界的情形相同了?先登记人的主要信息,然后登记人员的分类信息。可能你由要问了,这和我们一般定义的类有神么区别呢?又有什么吸引人的地方呢?如下所示:
解释了这么多,大家可能会觉得外部类和静态内部类之间是组合关系(Composition)了,这是错误的,外部类和静态内部类之间有强关联关系,这仅仅表现在"字面上",而深层次的抽象意义则依类的设计.
那静态类内部类和普通内部类有什么区别呢?下面就来说明一下:
标签:
原文地址:http://www.cnblogs.com/jianwei-dai/p/5897357.html