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 方法来进行查看,修改成员变量了。 
       说完了如何实现类的具体实现和数据的隐藏,代码的封装,下面就来说说这样封装代码的好处,毕竟本章节主要说的是封装:

封装代码有两个好处:

          一 、代码使用者无需考虑实现细节就能字节使用它,同时不用担心不可预料的副作用,别人不能随便修改内部结构。

          二、  在外部接口保持不变的情况下,自己可以修改内部实现,便易对代码的维护,及代码的安全性。


0 0
原创粉丝点击