您的位置:首页 > 职场人生

黑马程序员------毕老师视频笔记第五天------面向对象(封装)

2014-05-14 11:59 218 查看
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------

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

好处:①将变化隔离②便于使用③提高重用性④提高安全性

封装原则:①静不需要对外提供的内容隐藏起来②把属性都隐藏,提供公共方法对其访问

先看一段代码

class Person
{
intage;
voidspeak()
{
System.out.println("age="+age);
}
}

class PersonDemo
{
publicstatic void main(String[] args)
{
Personp = new Person();

p.age= 20;
p.speak();
}
}


这里,p.age 可以随意赋值,例如 p.age = -20; 这明显不符合实际,人的年龄不可以随便修改,所以用 private 修饰,私有化。

private :私有,权限修饰符,用于修饰类中成员,私有成员只能在类中访问。

将age 私有化以后,类以外即使建立了对象也不能访问,但是人应该有年龄,就需要Person 类中提供对应访问age 的方式。定义两个方法提供对外访问,setAge(int age)和getAge(),方法中可以对age属性进行限制。之所以对外提供访问方式,就是因为在访问方式中加入逻辑判断语句,对访问的数据进行操作,提高代码的健壮性。

注意:封装不是私有,私有仅仅是封装的一种表现形式,不私有也能实现封装,只要权限在访问不到的范围内就可以实现封装。

修改后的程序

class Person
{
privateint age;
publicvoid setAge(int a)
{
if(a>0 && a<130)
{
age= a;
speak();
}
else
System.out.println("非法年龄");
}
publicint getAge()
{
returnage;
}
voidspeak()
{
System.out.println("age="+age);
}
}

class PersonDemo
{
publicstatic void main(String[] args)
{
Personp = new Person();
//p.setAge(-20);//会报“非法年龄”
p.setAge(20);
}
}


通常都会将属性私有化,private是最小的访问权限。

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐