文档章节

【45】java的封装剖析

fengsehng
 fengsehng
发布于 2016/11/09 09:15
字数 461
阅读 3
收藏 0

类是构造对象的模板或蓝图。

封装的一些概念

从形式上看,封装不过是将数据和行为组合到一个包中,并对对象的使用者隐藏了数据的实现形式。

每个对象都包含实例域和方法。实例域的集合代表了一个集合的状态,通过方法来向对象发送消息,改变对象的状态。

封装的意义

实现封装的目的就是不让其他类的方法访问自己的实例域。
程序是通过类的方法进行交互。封装给了对象黑盒的特性,这是提高重用性和可靠性的关键。

降低了类之间的耦合性

一个对象无法访问其他的类的对象的数据,所以不对其他的类依赖,降低了耦合性。

方便数据域的错误检查

可以直接查找类的相应的方法,而不用排查其他的情况。

封装的注意事项:

不要编写返回引用可变对象的访问器方法

举个例子:

class Emplyee{
    private Date day;
    public Date getDay(){
        return day;
    }
}

上面的例子破坏了封装性

Emplyee harry;
Date d = harry.getDay();
d.setTime(new Date(););

出错的原因

d和day引用的是一个对象。对d改变。对象的私有实例域也会改变。

如何避免:

返回一个可变对象引用的克隆。

class Emplyee{
    private Date day;
    public Date getDay(){
        return day.clone();
    }
}

欢迎入群:

公众号IT面试题汇总讨论群

这里写图片描述

如果扫描不进去,加我微信(rdst6029930)拉你。

扫我微信二维码加我

这里写图片描述

欢迎关注《IT面试题汇总》微信订阅号。每天推送经典面试题和面试心得技巧,都是干货!

微信订阅号二维码如下:

这里写图片描述

© 著作权归作者所有

共有 人打赏支持
fengsehng
粉丝 4
博文 284
码字总数 214494
作品 0
朝阳
程序员
Android--面试中遇到的问题总结(三)

《Android 开发工程师面试指南 LearningNotes 》,作者是陶程,由梁观全贡献部分。大家可以去知乎关注这两位用心的少年。这份指南包含了大部分Android开发的基础、进阶知识,不仅可以帮助准备...

sealin
2017/02/22
0
0
常用Java性能测试工具的分析与对比

虽然市场上的 Java Profiler 工具有不少,但是基本功能大多相似,本节首先对这些基本功能进行介绍。 遥测(Telemetry):遥测是一种用来查看应用程序运行行为的最简单的方法。通常会有多个视...

lanmeimei
2014/03/18
0
0
Ubuntu 12.04 x64 安装jdk-7u45-linux-x64.tar.gz过程记录

Ubuntu 12.04 x64 安装jdk-7u45-linux-x64.tar.gz过程记录: 1.首先下载最新版 jdk 64-bit版 (jdk-7u45-linux-x64.tar.gz) 从官网下载http://www.oracle.com/technetwork/java/javase/downl......

cyper
2014/04/23
0
4
ubuntu12.04 64位安装java6

安装JDK1.6.0(下载编译2.3及更高版本,低版本请用jdk1.5) 下载jdk安装文件:jdk-6u45-linux-x64.bin 下载地址:http://yunpan.cn/QUduAGziC6Snw 将下载到的jdk-6u45-linux-x64.bin移动到/...

卡西卡
2013/11/23
0
0
(转载) linux安装JDK

vi /etc/profile 在文件的末尾增加以下内容: " #set java environment export JAVAHOME=/usr/lib/jvm/jdk1.6.045 export CLASSPATH=".:$JAVAHOME/lib:$CLASSPATH" export PATH="$JAVAHOME/:......

insights
2014/04/07
0
0

没有更多内容

加载失败,请刷新页面

加载更多

linux学习-0919

linux和windows互传文件 用户配置文件和密码配置文件 用户组管理 用户管理 一、linux和windows互传文件 linux和windows可以互相传输文件,但是需要使用xshell 并且安装lrzsz包: yum insta...

wxy丶
24分钟前
1
0
收集几个开源的微信小程序开发框架

1、 mpvue mpvue 是美团点评开源的一个使用 Vue.js 开发小程序的前端框架。框架基于 Vue.js 核心,mpvue 修改了 Vue.js 的 runtime 和 compiler 实现,使其可以运行在小程序环境中,从而为小...

哥本哈根的小哥
31分钟前
1
0
Golang CSP并发模型

今天介绍一下 go语言的并发机制以及它所使用的CSP并发模型 CSP并发模型 CSP模型是上个世纪七十年代提出的,用于描述两个独立的并发实体通过共享的通讯 channel(管道)进行通信的并发模型。 CS...

xtof
31分钟前
1
0
用chrome在电脑上模拟微信内置浏览器

先了解安卓微信和Ios微信的UA(User agent:用户代理) 安卓微信UA: mozilla/5.0 (linux; u; android 4.1.2; zh-cn; mi-one plus build/jzo54k) applewebkit/534.30 (khtml, like gecko) ve......

可达鸭眉头一皱
38分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部