zoukankan      html  css  js  c++  java
  • 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、 //方法重写的定义:方法名相同,参数列表相同,返回值类型相同或是其子类,

            访问权限不能严于父类 。

      

  • 相关阅读:
    .NET Core 3.0之创建基于Consul的Configuration扩展组件
    .NET Core 3.0之深入源码理解Configuration(三)
    .NET Core 3.0之深入源码理解Configuration(二)
    .NET Core 3.0之深入源码理解Configuration(一)
    python __getattr__ & __getattribute__ 学习
    nginx+uwsgi+flask+supervisor 项目部署
    Read a large file with python
    MySQL 基础回顾(2020/06/14修改)
    Linux运维: Rsync同步数据(ubuntu16.04+windows10)
    斐波那契数列的5种python实现写法
  • 原文地址:https://www.cnblogs.com/hanxiaowen/p/5564775.html
Copyright © 2011-2022 走看看