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中,判断一个类中的俩个方法是否相同,主要参考俩个方面:方法名字和参数列表

  • 相关阅读:
    CSS之旅——第二站 如何更深入的理解各种选择器
    CSS之旅——第一站 为什么要用CSS
    记录一些在用wcf的过程中走过的泥巴路 【第一篇】
    asp.net mvc 之旅—— 第二站 窥探Controller下的各种Result
    asp.net mvc 之旅—— 第一站 从简单的razor入手
    Sql Server之旅——终点站 nolock引发的三级事件的一些思考
    Sql Server之旅——第十四站 深入的探讨锁机制
    Sql Server之旅——第十三站 对锁的初步认识
    Sql Server之旅——第十二站 sqltext的参数化处理
    Sql Server之旅——第十一站 简单说说sqlserver的执行计划
  • 原文地址:https://www.cnblogs.com/koss/p/14469829.html
Copyright © 2011-2022 走看看