黑马程序员------毕老师视频笔记第五天------面向对象(封装)
2014-05-14 11:59
218 查看
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
好处:①将变化隔离②便于使用③提高重用性④提高安全性
封装原则:①静不需要对外提供的内容隐藏起来②把属性都隐藏,提供公共方法对其访问
先看一段代码
这里,p.age 可以随意赋值,例如 p.age = -20; 这明显不符合实际,人的年龄不可以随便修改,所以用 private 修饰,私有化。
private :私有,权限修饰符,用于修饰类中成员,私有成员只能在类中访问。
将age 私有化以后,类以外即使建立了对象也不能访问,但是人应该有年龄,就需要Person 类中提供对应访问age 的方式。定义两个方法提供对外访问,setAge(int age)和getAge(),方法中可以对age属性进行限制。之所以对外提供访问方式,就是因为在访问方式中加入逻辑判断语句,对访问的数据进行操作,提高代码的健壮性。
注意:封装不是私有,私有仅仅是封装的一种表现形式,不私有也能实现封装,只要权限在访问不到的范围内就可以实现封装。
修改后的程序
通常都会将属性私有化,private是最小的访问权限。
---------------------- 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培训、期待与您交流! ----------------------
相关文章推荐
- 黑马程序员------毕老师视频笔记第五天------面向对象(this关键字)
- 黑马程序员------毕老师视频笔记第五天------面向对象(构造函数)
- 黑马程序员------毕老师视频笔记第十天------面向对象(包)
- 黑马程序员------毕老师视频笔记第八天------面向对象(Object类)
- 黑马程序员------毕老师视频笔记第十天------面向对象(面向对象练习题上)
- 黑马程序员------毕老师视频笔记第七天------面向对象(抽象类)
- 黑马程序员------毕老师视频笔记第九天------面向对象(内部类)
- 黑马程序员------毕老师视频笔记第七天------面向对象(接口)
- 黑马程序员------毕老师视频笔记第七天------面向对象(继承)
- 黑马程序员------毕老师视频笔记第六天------面向对象(main函数)
- 黑马程序员------毕老师视频笔记第九天------面向对象(异常上)
- 黑马程序员------毕老师视频笔记第十天------面向对象(面向对象练习题下)
- 黑马程序员------毕老师视频笔记第八天------面向对象(接口多态的应用示例)
- 黑马程序员------毕老师视频笔记第六天------面向对象(对象初始化过程)
- 黑马程序员------毕老师视频笔记第八天------面向对象(多态)
- 黑马程序员------毕老师视频笔记第七天------面向对象(final关键字)
- 黑马程序员------毕老师视频笔记第六天------面向对象(static关键字)
- 黑马程序员------毕老师视频笔记第六天------面向对象(javadoc文档的制作)
- 黑马程序员------毕老师视频笔记第七天------面向对象(模板方法设计模式)
- 黑马程序员------毕老师视频笔记第十天------面向对象(异常下)