>>分享Java编程技术,对《Java面向对象编程》等书籍提供技术支持 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 27591 个阅读者 刷新本主题
 * 贴子主题:  Java 入门:封装 回复文章 点赞(0)  收藏  
作者:flybird    发表时间:2020-01-08 10:56:45     消息  查看  搜索  好友  邮件  复制  引用

  

Java 封装

在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部分包装、隐藏起来的方法。

        封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。

        要访问该类的代码和数据,必须通过严格的接口控制。

        封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。

        适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。    

封装的优点

  •      1. 良好的封装能够减少耦合。
  •      2. 类内部的结构可以自由修改。
  •      3. 可以对成员变量进行更精确的控制。
  •      4. 隐藏信息,实现细节。

实现Java封装的步骤

    1. 修改属性的可见性来限制对属性的访问(一般限制为private),例如:

public   class   Person   {
     private   String   name ;
     private   int   age ;
}

      这段代码中,将 name age 属性设置为私有的,只能本类才能访问,其他类都访问不了,如此就对信息进行了隐藏。

        2. 对每个值属性提供对外的公共方法访问,也就是创建一对赋取值方法,用于对私有属性的访问,例如:

public   class   Person {
     private   String   name ;
     private   int   age ;

     public   int   getAge ( ) {
       return   age ;
     }

     public   String   getName ( ) {
       return   name ;
     }

     public   void   setAge ( int   age ) {
       this . age  =  age ;
     }

     public   void   setName ( String   name ) {
       this . name  =  name ;
     }
}

                    采用 this 关键字是为了解决实例变量(private String name)和局部变量(setName(String name)中的name变量)之间发生的同名的冲突。            

实例

    让我们来看一个java封装类的例子:            

EncapTest.java 文件代码:

/*  文件名: EncapTest.java  */
public   class   EncapTest {

    private   String   name ;
    private   String   idNum ;
    private   int   age ;

    public   int   getAge ( ) {
       return   age ;
    }

    public   String   getName ( ) {
       return   name ;
    }

    public   String   getIdNum ( ) {
       return   idNum ;
    }

    public   void   setAge (   int   newAge ) {
       age  =  newAge ;
    }

    public   void   setName ( String   newName ) {
       name  =  newName ;
    }

    public   void   setIdNum (   String   newId ) {
       idNum  =  newId ;
    }
}

                    以上实例中public方法是外部类访问该类成员变量的入口。

        通常情况下,这些方法被称为getter和setter方法。

        因此,任何要访问类中私有成员变量的类都要通过这些getter和setter方法。

        通过如下的例子说明EncapTest类的变量怎样被访问:            

RunEncap.java 文件代码:

/*  F文件名 : RunEncap.java  */
public   class   RunEncap {
    public   static   void   main ( String   args [ ] ) {
       EncapTest   encap  =  new   EncapTest ( ) ;
       encap . setName ( " James " ) ;
       encap . setAge ( 20 ) ;
       encap . setIdNum ( " 12343ms " ) ;

       System . out . print ( " Name :  "  +  encap . getName ( ) +
                              "  Age :  " +  encap . getAge ( ) ) ;
     }
}

              以上代码编译运行结果如下:

             Name : James Age : 20

程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 flybird 在 2020-01-08 14:32:20 重新编辑]
  Java面向对象编程-->泛型
  JavaWeb开发-->JavaWeb应用入门(Ⅰ)
  JSP与Hibernate开发-->映射组成关系
  Java网络编程-->基于MVC和RMI的分布式应用
  精通Spring-->
  Vue3开发-->绑定表单
  从实战角度解读JVM:类加载机制+JVM调优实战+代码优化!
  好消息:《精通JPA与Hibernate:Java对象持久化技术详解》出...
  Java如何遍历Enumeration
  观察者模式和发布订阅模式的区别
  Java虚拟机(JVM)参数配置说明
  64匹马,8个赛道,找出跑得最快的4匹马
  Java中的受查异常与非受查异常区别
  面试必考-static、final和单例模式
  JNI_Java Native Interface的用法
  Eclipse使用指南:快速修复功能
  正则表达式基础入门
  Java入门实用代码:获取当前线程名称
  Java入门实用代码:查看线程是否存活
  Java入门实用代码:List 循环移动元素
  通过Java读取Excel数据
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。