1700441414
1700441415
}
1700441416
1700441417
/*home、name的getter/setter方法省略*/
1700441418
1700441419
public static class Home{
1700441420
1700441421
//家庭地址
1700441422
1700441423
private String address;
1700441424
1700441425
//家庭电话
1700441426
1700441427
private String tel;
1700441428
1700441429
public Home(String_address, String_tel){
1700441430
1700441431
address=_address;
1700441432
1700441433
tel=_tel;
1700441434
1700441435
}
1700441436
1700441437
/*address、tel的getter/setter方法省略*/
1700441438
1700441439
}
1700441440
1700441441
}
1700441442
1700441443
其中,Person类中定义了一个静态内部类Home,它表示的意思是“人的家庭信息”,由于Home类封装了家庭信息,不用在Person类中再定义homeAddre、homeTel等属性,这就使封装性提高了。同时我们仅仅通过代码就可以分析出Person和Home之间的强关联关系,也就是说语义增强了,可读性提高了。所以在使用时就会非常清楚它要表达的含义:
1700441444
1700441445
public static void main(String[]args){
1700441446
1700441447
//定义张三这个人
1700441448
1700441449
Person p=new Person(“张三”);
1700441450
1700441451
//设置张三的家庭信息
1700441452
1700441453
p.setHome(new Person.Home(“上海”,“021”));
1700441454
1700441455
}
1700441456
1700441457
定义张三这个人,然后通过Person.Home类设置张三的家庭信息,这是不是就和我们真实世界的情形相同了?先登记人的主要信息,然后登记人员的分类信息。可能你又要问了,这和我们一般定义的类有什么区别呢?又有什么吸引人的地方呢?如下所示:
1700441458
1700441459
提高封装性。从代码位置上来讲,静态内部类放置在外部类内,其代码层意义就是:静态内部类是外部类的子行为或子属性,两者直接保持着一定的关系,比如在我们的例子中,看到Home类就知道它是Person的Home信息。
1700441460
1700441461
提高代码的可读性。相关联的代码放在一起,可读性当然提高了。
1700441462
1700441463
形似内部,神似外部。静态内部类虽然存在于外部类内,而且编译后的类文件名也包含外部类(格式是:外部类+$+内部类),但是它可以脱离外部类存在,也就是说我们仍然可以通过new Home()声明一个Home对象,只是需要导入“Person.Home”而已。
[
上一页 ]
[ :1.700441414e+09 ]
[
下一页 ]