java学习面向对象之封装

时间:2024-01-10 08:31:32

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

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、将属性都隐藏起来,提供公共方法对其访问。