Java 第16章 封装

 封装(encapsulation)
    类使得数据和对数据的操作集成在一起,从而对使用该类的其他人来说,可以不管它的实现方法,而只管用它的功能,从而实现所谓的信息隐藏。 

封装 ,

   使用类图描述类

    用于分析和设计 《类》 直观、容易理解

 对象初始化

  使用构造方法: Penguin pgn1 =new Penguin(); 

  构造方法

    无返回值类型 ,与类名相同

     访问修饰符  构造方法名 //可以指定参数 (){

           //初始化代码

      }

   示例 : public Penguin(){

     // 系统提供默认无参构造方法

  }

   自定义构造方法:

     系统不再提供默认无参构造方法

     public Penguin(){ 

        name =“qq”;         //方法名相同                       }

        love=20;               //参数项不相同                    }  方法重载

         sex=“Q仔”;          //与返回值、访问修饰符无关     }

   }

    this.name =name;

    this.health=health;

    this.love=love;

    this.sex=sex;

  备注: this 关键字是对一个对象的默认引用,这里用以区分同名成员变量

    调用默认无参构造方法,有返回值类型,不是构造方法!

     static 关键字

      使用 static 定义变量 用 final 修饰的变量称为常量,其值固定不变

      使用static 定义方法

        static void print(){}用类名调用:Penguin.print();

        静态常量     注: 在方法里不可以定义static 变量

             Dog d =new Dog();

             d.health =-1000;

               属性随意访问,不合理的赋值

   如何解决上面设计的缺陷? 使用封装

      什么是封装:

      面向对象三大特征之一   --> 封装 封装的概念

      封装:将类的某些信息隐藏在类内部,不允许外部程序直接访问,而是通过该类提供的方法

       来实现对隐藏信息的操作和访问。

      封装的好处:

     1 只能通过规定方法访问数据

     2 隐藏类的实现细节

     3 方便修改实现

     4 方便加入控制语句

  封装步骤:

    1.修改属性的可见性  -->设为 private

     2. 创建公有的 getter/setter 方法 -->用于属性的读写

     3. 在getter /setter 方法中加入属性控制语句 -->对属性值的合法性进行判断  

       this 关键字的用法

        调用属性

        this.health =100;

        this.name=“大黄”;

        调用方法

          this.print();

         调用构造方法

     this ();

      this("小黑", 100,100,"雄"); -->如果使用,必须是构造方法中的第一条语句

     重点: //构造方法不能被子类继承

        //子类可以调用父类的构造方法,

     //如果手动添加了带参数的构造方法,同时添加上无参构造方法

    //如果调用子类的构造方法,如果不显示的调用父类的构造方法,

              默认调用的是父类的无参构造方法 。

     //所有类的父类是 Object

      

  备注://方法的重载定义:方法名相同、参数列表不同,与方法的访问修饰符,返回值类型无关

     (构造方法是方法重载的特殊)

 2、 //方法重写的定义:方法名相同,参数列表相同,返回值类型相同或是其子类,

        访问权限不能严于父类 。

  

原文地址:https://www.cnblogs.com/hanxiaowen/p/5564775.html