打字猴:1.700441414e+09
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 ]  [ 下一页 ]