java学习面向对象之封装

在以往几节当中我们讲到了什么是类,类就是对一类事物的描述,比如现在我们有一个人类

class Person
{

	/**
	*这里我们分别在name和age上加上了元素的访问权限
	*这里的private是指,这个变量只能被当前类访问,其他的地方是没法访问到的,即使是当前类的一个实例化对象
	*也是没法访问的。那么这里就有一个问题了,我们定义了一个成员变量确没法访问:
	*这里举一个详细的例子来讲:
	*我们有一个房子,房子里面放了很多的钱,我们的房子有一个门。在我们没有给这个门加任何的限制的时候,任何人
	*都是可以进出的,也就是说他默认的就是public修饰符,这样是不是很危险呢?此时为了安全期间,我们就用墙把这
	*个门给堵上了,这样就又出现了一个问题,我们没法取钱啊,我们再换一种方式,我们给这个门加上一把锁,这样
	*我们就可以即能限定出入这个对象的人,同时也让我们能够取钱。
	*承接上面的描述,现在我们有一把锁,想要进去,是不是得有一把钥匙才可以啊,只要有这把钥匙我们就能够进去
	*这个就需要一个公开的成员方法来判断进来的人是好人还是坏人,因为我们之前讲的语句,如if swith等等只能在函数
	*当中存在,其他地方他的存在是不合法的
	*综上所述,便就是封装
	*/

	private String name;
	private int age;
	/**
	*既然定义了私有成员变量,那么接下来我们来定义一个公开的访问方法才可以,同时这个公开的方法当中有能够起限定作
	*用的代码段
	*/
	public void setAge(int n)
	{
		/**限制n的范围,防止破坏我们已经封装好了的合理的对象*/
		if(n>0&&n<100)
			 age = n;
		else
			System.out.print("非法的年龄数值,请检查您的输入是否有误");

	}

	public int getAge()
	{

		return age;

	}

	void speak()
	{

		System.out.print(name+"....."+age);

	}
	
}

class PersonDemo
{

	public static void main(String[] args) {
		Person p = new Person();
		//p.age = 10;
		//p.age = -10;显然这种定义方式是不正确的,因为他违背了我们正确描述事物的原则
		/**
		*这里我们为了保护我们的数据是在合法范围之内的,就需要界定他的访问权限,让他的值
		*在我们的控制范围之内,这个便就是封装
		*/
		/**
		*在启用封装之后,我们就来调用相关的方法
		*/
		p.setAge(10);//合法赋值
		p.setAge(-333);//非法赋值
		p.speak();
	}
	
}

讲了那么多:那么封装的好处在什么地方呢?

封装的定义:封装是指,隐藏对象的属性还有实现细节,仅对外提供公共的访问方式。

但是需要注意的一点是,私有化仅是体现封装的一种方式而已。

封装的好处:

1、将变化隔离;2、便于使用;3、提高重用性;4、提高安全性。

封装的原则:

1、将不需要对外提供的内容都隐藏起来

2、将属性都隐藏起来,提供公共方法对其访问。

posted @ 2013-09-19 20:51  stark_javac  阅读(162)  评论(0编辑  收藏  举报