建议38:使用静态内部类提高封装性

package com.gcq.mine.advisor;


/**
 *
 * @author Phenix
 * 2011-3-24
 */
public class PersonX{
//姓名
private String name;
//家庭
private Home home;
//构造函数设置属性值
public PersonX(String _name){
name = _name;
}


public String getName() {
return name;
}
public void setName(String _name) {
name = _name;
}
public Home getHome() {
return home;
}
public void setHome(Home home) {
this.home = home;
}


public static class Home{
//家庭地址
private String address;
//家庭电话
private String tel;

public Home(String _address,String _tel){
address = _address;
tel = _tel;
}

public String getTel() {
return tel;
}


public void setTel(String tel) {
this.tel = tel;
}



public String getAddress() {
return address;
}


public void setAddress(String address) {
this.address = address;
}
}

}


package com.gcq.mine.advisor;


import com.gcq.mine.advisor.PersonX.Home;


public class Client16 {
public static void main(String[] args) {
//定义张三这个人
PersonX p = new PersonX("张三");
//设置张三的家庭信息
p.setHome(new Home("上海","021"));
}
}

(1)静态内部类不持有外部类的引用

      在普通内部类中,我们可以直接访问外部类的属性、方法。即使是private类型也是可以访问,这是因为内部类持有

一个外部类的引用,可以自由访问。而静态内部类,则只可以访问外部类的静态方法和静态属性(如果是private权限也能

访问,这是由其代码位置所决定的),其他则不能访问。


(2)静态内部类不依赖外部类

普通内部类与外部类之间是相互依赖的关系,内部类实例不能脱离外部类实例,也就是说它们会同生同死,

一起声明,一起呗垃圾回收器回收。而静态内部类是可以独立存在的,即使外部类消亡了,静态内部类还是可以存在的。

(3)普通内部类不能声明static的方法和变量

  普通内部类不能声明static的方法和变量,注意这里说的是变量,常量(也就是final static修饰的属性)还是可以的,而静态内部类形似

外部内,没有任何限制。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值