java封装特性

什么是封装

 封装,即隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别;将抽象得到的数据和行为(或功能)相结合,形成一个有机的整体,也就是将数据与操作数据的源代码进行有机的结合,形成“类”,其中数据和函数都是类的成员。在电子方面,封装是指把硅片上的电路管脚,用导线接引到外部接头处,以便与其它器件连接。

 也就是说,在程序设计中"封装"就是把对象的状态和行为看成一个统一的整体,将二者存放在一个独立的模块中,比如:类;

 把不想对外公开的实现细节隐藏起来,使用private关键字使其私有化,向外暴露public方法,保证调用者安全访问,不会出现因为越界导致本不应该出现的问题出现;

访问权限修饰符

 在java中用一些关键字来控制调用者的访问权限

  • private:属于类访问权限,表示私有的,只能在当前类中访问,使用private修饰的类、方法、字段,在’离开当前类的作用域之后,调用者就不能直接访问。

  • (缺省):其实就是什么都不写,其属于包访问权限,表示包私有的,调用者的包必须和当前类(使用缺省修饰)的包相同才能访问。

  • protected:属于子类访问权限,表示受保护的,使用protected修饰的类、方法、字段,不仅同包中类可以访问,而且即使不同包,但是如果有继承关系,也可以访问。

  • public:表示全局的公共访问权限,可以修饰属性和方法,表示在任何的地方都可以使用。接口(interface)中的方法默认都是public的。

 在日常的开发中,我们一般都是对类中的属性字段设置为private,对于一些细节的方法,不需要对外提供的我们也设置为private。

一个Model代码

public class Role {

    private Integer roleId;

    private String roleName;

    private Boolean isSystemRole;

	public Integer getRoleId() {
		return roleId;
	}

	public void setRoleId(Integer roleId) {
		this.roleId = roleId;
	}

	public String getRoleName() {
		return roleName;
	}

	public void setRoleName(String roleName) {
		this.roleName = roleName;
	}

	public Boolean getIsSystemRole() {
		return isSystemRole;
	}

	public void setIsSystemRole(Boolean isSystemRole) {
		this.isSystemRole = isSystemRole;
	}
    
}

分析:
 上面就是一个封装的体现,对于属性roleId、roleName、isSystemRole字段,应该保证它的私有性,所以通过private关键字进行修饰。

$emsp;而对外提供了Getxxx、Setxxx方法用来修改上述字段,所以对外的方法要通过public关键字进行修饰。

封装的好处

 在实现一个类是,由于公共的数据非常危险,所以应该将所有的数据字段设置为私有的。

 而对于方法,虽然绝大多数方法都被设计为公共的,但是在某些时候,可能希望将一个计算代码分解成若干个独立的辅助方法。最后由一个对外暴露一个公开的方法,随意对于这些辅助方法根本没必要对外公开,最好就是将其设置为私有。这样在日后的改动中,可以明确的知道这个私有方法在其它地方不会有调用。

参考文献:java核心技术 卷1

# java  基础 

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×