面向对象三大特征:
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{ 

	public	String name; //名字

	private	String sex; //性别

	public	int 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.封装的更多相关文章

  1. JAVA_SE基础——26.[深入解析]局部变量与成员变量的区别

    黑马程序员入学blog ... 如果这章节很难懂的话应该返回去先看  JAVA_SE基础--10.变量的作用域 定义的位置上区别: 1. 成员变量是定义在方法之外,类之内的. 2. 局部变量是定义在方 ...

  2. JAVA_SE基础——9.基本数据类型间的转换

    前面我已经教会大家基本的数据类型进行了介绍,   然后这篇文章,我来介绍下,基本数据类型的转换. Java中有两种类型转换形式,分别是自动类型转换和强制类型转换. Step1.自动类型转换. 自动类型 ...

  3. JAVA_SE基础——8.基本数据类型

    基本数据类型有:整数类型.浮点类型.字符类型.布尔类型 整数类型 整数类型用来存储整数数值,即没有小数部分的数值.与C.C++语言相同,整数在Java语言中有3种表示形式:十进制.八进制和十六进制. ...

  4. JAVA_SE基础——7.常量&变量

    上一篇,我讲了标识符&关键字    这篇我来解释下变量&常量~~~ 变量与常量这两个概念相信大家都不会感到陌生,在数学中就已经涉及了变量与常量.理解变量与常量,可以举这样一个例子: 例 ...

  5. JAVA_SE基础——6.标识符&关键字

    学会写helloworld之后,  我们就开始来认识标识符&关键字 一.标识符 标识符是指可被用来为类.变量或方法等命名的字符序列,换言之,标识符就是用户自定义的名称来标识类.变量或方法等.更 ...

  6. JAVA_SE基础——5.第一个Java程序HelloWorld&注释的应用

    配置完JDK&环境变量后,我们就可以开始写程序了,那么程序怎么写呢,用什么工具呢,我建议 为了方便学习,我们最好在一个磁盘下建立一个专门的文件来写java程序,比如就在D盘下建立一个名为&qu ...

  7. JAVA_SE基础——4.path的临时配置&Classpath的配置

    这次,我来写下关于path的临时配置的心的 我来说个有可能的实例:如果你去到别人的电脑 又想写代码 又不想改乱别人的path配置的话  再说别人愿意你在别人的电脑上瞎配吗? 那该怎么办呢? 那没问题 ...

  8. JAVA_SE基础——2.环境变量的配置&测试JDK

    哈喽,利用晚上的空余时间再写篇心的~~~  谢谢大家 前一篇文章 JAVA_SE基础--JDK&JRE下载及安装http://blog.csdn.net/thescript_j/article ...

  9. JAVA_SE基础——1.JDK&JRE下载及安装

    这是我学了JAVA来写的第一篇博客: 我首先是在传智播客领了张.毕向东老师的免费JAVA学习光盘来学习! 下面我来教大家安装使用JAVA时候必备的JDK 1.首先上甲骨文公司的官方网站下载JDK的安装 ...

随机推荐

  1. C# + Javascript 实现评论回复功能

    首先先介绍一下前台 <script type="text/javascript"> function openWindow() { window.open(" ...

  2. Bootstrap 在手机页时,导航下拉自动回收

    $(".menu-main").collapse("hide"); //.menu-main就是下来导航的类名

  3. cookie 的增加,销毁,读取

    <!DOCTYPE html><html lang="en"> <head> <meta charset="UTF-8" ...

  4. 浅析C#之委托、Action、Func

    一.委托 1.1 委托的定义 delegate(委托)是一种可用于封装命名方法或匿名方法的引用类型, 委托类似于 C++ 中的函数指针: .Net通过委托来提供回调函数机制. 声明一个委托类型 int ...

  5. poj-2909-哥德巴赫猜想

    Description For any even number n greater than or equal to 4, there exists at least one pair of prim ...

  6. 网络通信 --> 消息队列

    消息队列 消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法.可以通过发送消息来避免命名管道的同步和阻塞问题.但是消息队列与命名管道一样,每个数据块都有一个最大长度的限制. Linux用宏M ...

  7. STL --> list用法

    List介绍 Lists将元素按顺序储存在链表中.与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢. assign() // 给list赋值 back() // 返回最后 ...

  8. [学习笔记]Javaweb开发视频教程之Tomcat9配置

    参考自北京动力节点的视频教程:https://www.bilibili.com/video/av14548279/?p=1 1.Java XE Java SE 是做电脑上运行的软件. Java EE ...

  9. 有关java中的hashCode问题

    1. HashSet集合存储数据的结构(哈希表) 1.1 什么是哈希表? 哈希表底层使用的也是数组机制,数组中也存放对象,而这些对象往数组中存放时的位置比较特殊,当需要把这些对象给数组中存放时,那么会 ...

  10. Java并发编程实战(chapter_2)(对象发布、不变性、设计线程安全类)

    一.发布与溢出 "发布(Publish)"一个对象的意思是指,使对象能够在当前作用于之外的代码中使用.这个"之外",尤为关键,各种出问题的地方,都是因为这个&q ...