Java基本概念之 封装
来源:互联网 发布:吉他入门软件下载 编辑:程序博客网 时间:2024/05/21 22:43
好久没有系统的看Java的基础概念了,今天就说下Java的三大特性之一的 封装,先上概念
封装(Encapsulation):在面向对象程式设计方法中,封装是指一种将抽象性 函式接口的实作细节部分包装、隐藏起来的方法。
封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问,要访问该类的代码和数据,就必须通过严格的接口控制。
封装最主要的功能在于我们能修改自己实现的代码,而不用修改哪些调用我们代码的程序片段,另外适当的封装可以让代码更易于理解和维护,也加强了代码的安全性。
概念分析:从上面的概念中可以看出封装是一个隐藏信息的技术方法(包装是动作,隐藏信息才是最终目的),是将一个系统中的结构和行为通过类来划分的过程。即通过定义一组类,将特定的数据组合到一个类中,形成一个整体,将该隐藏的数据进行保护,只对外暴露这些数据的访问方法。既然概念有了,具体的需求有了,那么我们如何实现这种效果呢?如何隐藏类的具体实现和数据?其实之前的代码中我们已经用到了,现在让我们来系统的了解下。
Java是通过访问控制关键字来实现信息的隐藏,那么都有哪些关键字呢?一共有三个:private 、protected 、public。
关键字的作用:可用于修饰类,或者修饰类中的成员变量和成员方法。
修饰类的关键字:在IDE工具中只有两个即public 和package (默认的) ,
public 公共的,公开的访问范围也是最大的,其他任何类都可以访问该类;
private 只能用于修饰内部静态类,一般不提倡;
默认情况 如果没有任何访问控制修饰符(IDE一般用package来表示),则表示相同包内的类可以访问该类。
修饰成员变量和成员方法的关键字:
public 跟类的范围一样,其他任何类都可以访问该成员;
protected 只有继承自己的子类才能访问该成员;
private 除自己以外其他的任何类都不能访问该成员;
默认 如果没有任何访问控制修饰符,则表示相同包内的类可以访问该成员。
可见,如果要隐藏一个类的成员变量,只要在该成员变量的前面加上private,这样外部就无法直接通过类的实例来访问这些成员变量。
下面来看下ClassName类的代码,一开始就用public来修饰类的本身,而用private修饰所有的成员变量,这样就保证了成员变量的隐藏。
public class ClassName {private long id;private String title;private String content;}但是如果我要访问该类的成员变量,或者进行修改成员变量,该怎么办呢?我们可以给这些私有的成员变量添加 public 访问方法:
public class ClassName {private long id;private String title;private String content;public long getId() {return id;}public void setId(long id) {this.id = id;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}}这样我们就能够通过访问 getter 和 setter 方法来进行查看,修改成员变量了。
说完了如何实现类的具体实现和数据的隐藏,代码的封装,下面就来说说这样封装代码的好处,毕竟本章节主要说的是封装:
封装代码有两个好处:
一 、代码使用者无需考虑实现细节就能字节使用它,同时不用担心不可预料的副作用,别人不能随便修改内部结构。
二、 在外部接口保持不变的情况下,自己可以修改内部实现,便易对代码的维护,及代码的安全性。
- Java基本概念之 封装
- 基本概念:封装
- Java多线程之基本概念
- java线程之基本概念
- java反射之基本概念
- java基础复习之基本概念
- java基础之几个基本概念
- JAVA多线程系列之基本概念
- Java学习之封装
- java之封装ArrayList
- Java学习之封装
- Java学习之封装
- java之封装 Encapsulation
- Java之属性封装
- Java之封装
- Java基础之--封装
- Java之封装
- java之封装、继承
- 开发过程中自己遇到的问题总结
- python笔记,pycharm
- java学习--独特的垃圾回收机制
- hdoj 5972 树状数组
- jquery删除数组中重复元素$.inArray(s)
- Java基本概念之 封装
- 数据相似的的计算
- ListView(列表视图)+BaseAdapter(基础适配器)=android滑动列表
- 给定字符串中有无重复字符?
- poj 3349 Snowflake Snow Snowflakes
- Android02Android API Guide学习和常用布局及基本UI控件
- Java基础学习——泛型(generics)二
- java学习路线目录
- 安装Python2.7其他必要库