JAVA_SE基础——28.封装
来源:互联网 发布:win10好软件 编辑:程序博客网 时间:2024/06/05 20:30
黑马程序员blog...
面向对象三大特征:
1. 封装
2. 继承
3 多态。
今天我们先学习第一大特征,封装。
封装:是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
好处:
1. 将变化隔离。
2. 便于使用。
3. 提高复用性。
4. 提高安全性。
封装原则:
1. 将不需要对外提供的内容都隐藏起来。
2. 把属性都隐藏,提供公共方法对其访问。如,getXXX,setXXX。
权限修饰符:权限修饰符就是控制变量可见范围的。
public : 公共的。 public修饰的成员变量或者方法任何人都可以直接访问。
private : 私有的, private修饰的成员变量或者方法只能在本类中进行直接访问。
封装的步骤:
1. 使用private修饰需要被封装的属性。
2. 提供一个公共的方法设置或者获取该私有的成员属性。
命名规范:
set属性名();
get属性名();
疑问: 封装一定要提供get或者set方法吗?
不一定, 根据需求而定的。
规范 : 在现实开发中一般实体类的所有成员属性(成员变量)都要封装起来。
实体类:实体类就是用于描述一类 事物的就称作为实体类。
封装的解释;为了避免对数据域的直接修改,应该使用private修饰符将数据域声明为私有的。这就称为数据域封装(data field encapsulation)
在定义私有数据域的类外的对象是不能访问者个数据域的。但是经常会有客户端需要存取、修改数据域的情况。为了能访问私有数据域,可以提供一个get方法返回数据域的值。为了能够更新一个数据域,可以提供一个set方法给数据设置新值。
封装的白话解释:原文题材链接:http://blog.csdn.net/chenssy/article/details/12757911
所以封装把一个对象的属性私有化,同时提供一些可以被外界访问的属性的方法,如果不想被外界方法,我们大可不必提供方法给外界访问。但是如果一个类没有提供给外界访问的方法,那么这个类也没有什么意义了。比如我们将一个房子看做是一个对象,里面的漂亮的装饰,如沙发、电视剧、空调、茶桌等等都是该房子的私有属性,但是如果我们没有那些墙遮挡,是不是别人就会一览无余呢?没有一点儿隐私!就是存在那个遮挡的墙,我们既能够有自己的隐私而且我们可以随意的更改里面的摆设而不会影响到其他的。但是如果没有门窗,一个包裹的严严实实的黑盒子,又有什么存在的意义呢?所以通过门窗别人也能够看到里面的风景。所以说门窗就是房子对象留给外界访问的接口。
如果还没有弄懂的同学下面来看个例子;
class Person{ publicString name; //名字privateString sex; //性别publicint salary; //薪水//定义一个公共的方法设置sex属性public void setSex(String s){if (s.equals("男")||s.equals("女")){ //注意: 如果比较两个字符串的内容是否一致,不要使用==比较, 使用equals方法。sex = s;}else{//默认是男sex = "男";}}//定义一个公共的方法获取sex属性public String getSex(){return sex;}//聊天的功能public void talk(){System.out.println(name+"聊得非常开心");}}class Demo5{public static void main(String[] args) {Person = new Person();m.name="张家仪";m.setSex("女");m.salary = 9900;System.out.println("姓名:"+ m.name+" 性别:"+ m.getSex()+" 薪水:"+ m.salary);}}
比如上面代码是微博。 一般女孩子都不喜欢把自己的真实年龄给填上去,所以一般的微博都可以设置为隐私。 这个功能就像是private关键字,把年龄这个成员属性给私有化,只有自己才看的到,别人看不到。 私有属性只能在它的类中被访问,为了能让外界访问私有属性,需要提供一些使用public修饰的公有方法,其中包括用于获取属性值得getXxx()方法和设置属性值的setXxx()方法。
- JAVA_SE基础——28.封装
- JAVA_SE基础——6.标识符&关键字
- JAVA_SE基础——7.常量&变量
- JAVA_SE基础——8.基本数据类型
- JAVA_SE基础——15.循环嵌套
- JAVA_SE基础——16.方法
- JAVA_SE基础——27.匿名对象
- JAVA_SE基础——29.构造函数
- JAVA_SE基础——31.this关键字
- JAVA_SE基础——39.继承
- JAVA_SE基础——40.super关键字
- JAVA_SE基础——43.抽象类
- JAVA_SE基础——47.接口
- JAVA_SE基础——48.多态
- JAVA_SE基础——51.内部类
- JAVA_SE基础——53.什么是异常?
- JAVA_SE基础——54.异常
- JAVA_SE基础——60.初识Object
- 深入理解JavaScript系列(41):设计模式之模板方法
- 集合(二)
- Hibernate 如果 hibernate.cfg.xml 没有放在 src 下,则使用以下配置方式
- Qt学习之路之浏览器简单操作
- metaq spring配置
- JAVA_SE基础——28.封装
- 深入理解JavaScript系列(42):设计模式之原型模式
- 操作系统常见面试题总结
- multi_treap
- 九度OJ 题目1077:最大序列和
- 单元格的基本用法
- Swift-闭包简单使用
- 深入理解JavaScript系列(43):设计模式之状态模式
- hdoj最短路径问题