zoukankan      html  css  js  c++  java
  • Java三大特征之封装

     作为三个特征之一的封装,相对来说还是比较好理解的。

    我要看电视,只需要按一下开关和换台就可以了。有必要了解电视机内部的结构吗?有必要碰碰显像管吗?

    制造厂家为了方便我们使用电视,把复杂的内部细节全部封装起来,只给我们暴露简单的接口,比如: 电源开关。需要让用户知道的暴露出来,不需要让用户了解的全部隐藏起来。这就是封装。

    白话:该露的露,该藏的藏

    专业:我们程序设计要追求“高内聚,低耦合”。

      高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;

      低耦合:仅暴露少量的方法给外部使用。

    封装(数据的隐藏)

      在定义一个对象的特性的时候,有必要决定这些特性的可见性,即哪些特性对外部是可见的,哪些特性 用于表示内部状态。

      通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。

    1、封装的步骤:

      1.使用private修饰需要封装的成员变量

      2.提供一个公开的方法设置或者访问私有的属性

        设置   通过set方法,命名格式: set属性名(); 属性的首字母要大写

        访问   通过get方法,命名格式: get属性名(); 属性的首字母要大写

    【演示】

     1 //对象能在类的外部"直接"访问
     2 public class Student{
     3     public String name;
     4     public void println(){
     5         System.out.println(this.name);
     6     }
     7 }
     8 public class Test{
     9     public static void main(String[] args){
    10         Student s = new Student();
    11         s.name = "tom";
    12     }
    13 }

    在类中一般不会把数据直接暴露在外部的,而使用private(私有)关键字把数据隐藏起来

    【演示】

     1 public class Student{
     2     private String name;
     3 }
     4 public class Test{
     5     public static void main(String[] args){
     6         Student s = new Student();
     7 //编译报错,在类的外部不能直接访问类中的私有成员
     8         s.name = "tom";
     9     }
    10 }

    如果在类的外部需要访问这些私有属性,那么可以在类中提供对于的get和set方法,以便让用户在类的外部 可以间接的访问到私有属性

    【演示】

    //set负责给属性赋值
    //get负责返回属性的值
    public class Student{
        private String name;
        public void setName(String name){
            this.name = name;
        }
        public String getName(){
            return this.name;
        }
    }
    public class Test{
        public static void main(String[] args){
            Student s = new Student();
            s.setName("tom");
            System.out.println(s.getName());
        }
    }

    2、作用和意义

      1. 提高程序的安全性,保护数据。

      2. 隐藏代码的实现细节

      3. 统一用户的调用接口

      4. 提高系统的可维护性

      5. 便于调用者调用。

    良好的封装,便于修改内部代码,提高可维护性。

    良好的封装,可进行数据完整性检测,保证数据的有效性。

    3、方法重载

    类中有多个方法,有着相同的方法名,但是方法的参数各不相同,这种情况被称为方法的重载。方法的重载 可以提供方法调用的灵活性。

    例如:

    1 public class Test{
    2     public void test(String str){
    3     }
    4     public void test(int a){
    5     }
    6 }

    方法重载必须满足以下条件

      1. 方法名必须相同

      2. 参数列表必须不同(参数的类型、个数、顺序的不同)

    1 public void test(Strig str){}
    2 public void test(int a){}
    3 public void test(Strig str,double d){}
    4 public void test(Strig str){}
    5 public void test(Strig str,double d){}
    6 public void test(double d,Strig str){}

      3. 方法的返回值可以不同,也可以相同。

    在java中,判断一个类中的俩个方法是否相同,主要参考俩个方面:方法名字和参数列表

  • 相关阅读:
    C++中的空类,编译器默认可以产生哪些成员函数
    野指针(Wild pointer)和悬垂指针(dangling pointer)
    WHY C++ ?(by Herb Sutter) & C++17 standard
    mapreduce 多路输出
    stdout 编码 vim 删除左边,右边
    积累碎片shell
    python logging模块
    shell 流程控制
    shell 变量
    时间管理法则
  • 原文地址:https://www.cnblogs.com/koss/p/14469829.html
Copyright © 2011-2022 走看看