---------------------- 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培训、期待与您交流! ----------------------