首页 > 代码库 > java的封装

java的封装

    学习编程和有一段时间了,现在整理一些东西,留着自己以后翻阅,有可能也能帮助其他人。

封装:

  封装是指将对象的状态信息隐藏在对象内部,不允许外部的程序直接访问对象内部的信息,而是通过该类所提供的方法来实现对内部信息的操作和访问。

    封装是面向对象编程语言对客观世界的模拟,客观世界里的属性都是被隐藏在对象内部,外界无法直接操作和修改。

    封装的好处很多:

1、 隐藏类的实现细节

2、 让使用者只能通过预定的方法来访问数据,从而可以在该方法里加入控制逻辑,限制对属性的不合理访问。

3、 可进行数据检查,从而有利于保证对象信息的完整性。

4、 便于修改,提高代码的可维护性。

访问控制符:

   Java中提供了三种访问控制符:private ,protected和public,另外还有一个不加任何访问控制符的访问控制级别,因此java提供了四种访问控制级别。即:private,default,protected和public。含义分别表示私有的,默认的,受保护的和公有的访问修饰符。这四个访问级别中default并没有对应的访问控制符,当不使用任何修饰符来修饰类和成员(属性/方法)时,系统默认使用该访问控制符。这些访问修饰符既可以修饰类中的属性,又可以修饰类中的方法,而public和default还可以修饰类。在同一个java文件里,公有类有且仅有一个,并且该文件命名为类名.java

     Java访问修饰符就是确定类中属性或方法的访问权限,换句话说,就是这些属性和方法所起的作用范围。

     private,私有的访问权限,也是最严格的访问权限,仅只能在设置了该权限的类中访问,利用这个访问权限,表现出封装思想。

     default,默认的访问权限,也是可以省略的访问权限,它不仅能在设置了该权限的类中访问,也可以在同一包中的类或子类中访问。

     protected,受保护的访问权限(子类访问权限),如果一个成员(属性或是方法)使用了这个访问控制符修饰,那么这个成员既可以被一个包中的其他类访问,也可以被不同包中的子类访问,通常,如果用protected来修饰一个方法,通常是希望其子类来重写这个方法。

     public,公有的访问权限,也是最宽松的访问权限,不仅可以是同一个类或子类,还是同一个包中的类或子类,又还是不同包中的类或子类,都可以访问。

     要想更深入地理解这些访问权限,一方面需要明白各自的作用域,另一方面更是要弄清楚各自所体现出来的编程思想,比方说,private表现的封装思想,public表现的面向接口编程的思想等。

例如:

public class Test{    public static void main(String[] args)    {        Human aPerson = new Human(160);        System.out.println(aPerson.getHeight());        aPerson.growHeight(170);        System.out.println(aPerson.getHeight());        aPerson.repeatBreath(100);    }}class Human{    /**     * constructor     */    public Human(int h)    {        this.height = h;        System.out.println("I‘m born");    }    /**     * accessor     */    public int getHeight()    {       return this.height;    }    /**     * mutator     */    public void growHeight(int h)    {        this.height = this.height + h;    }     /**      * encapsulated, for internal use      */    private void breath()    {        System.out.println("hu...hu...");    }   /**    * call breath()    */    public void repeatBreath(int rep)    {        int i;        for(i = 0; i < rep; i++) {            this.breath();        }    }    private int height; // encapsulated, for internal use}

     在面向对象设计和编程的过程中,归根结底就是类的设计。而要设计出不仅满足当前需求同时也能符合未来需求的类,就很有必要对类中属性和行为设置合适的访问 权限。那些应该为私有的,那些又应该为公有的,还有那些又应该为受保护的等,都应该给予合理的规划和布局,一来保证程序的功能要求,二来要体现程序的扩展 性能,三来要呈现程序友好性质。总之,程序应该更好地服务用户。而访问权限在这样宏伟目标里扮演着重要角色。

java的封装