如何设计类-封装

封装的基本原则

       设计类时将实例变量标记为私有,并提供公有的getter和setter方法

 

在某一项目中,如果我们设计Dog类为

class Dog {
	int height;
}

       那么根据类创建出的theDog对象height实例变量将可以直接修改,且无法增加任何校验,若异常情况导致theDog.height=0语句出现,该语句将执行成功,并引发不可预知的错误场景。

 

根据封装的基本原则,应该将Dog类设计为

class Dog {
	private int height;

	public int getHeight() {
		return height;
	}

	public void setHeight(int height) {
		// 我们可以选择增加合法性校验,且在校验调整时无需修改其他部分代码
		if(height <= 0){
			System.out.println("Dog高度必须大于0");
		}
		this.height = height;
	}
}

       实际程序中很多类的getter和setter方法什么事情也没做,只是把值设给变量,看上去和变量公有的效果一样,存在数据非法性问题,但好处是事后可以改变想法增加校验,却不需改变其他部分的程序。

 

参考文档:Head First Java

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值