首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Python与算法之美

    11封装和继承

    一,封装 1,私有属性和私有方法 以两个下划线开头的属性和方法(如 __age )表示私有属性和方法,在类的外部不可见。

    40230发布于 2020-07-20
  • 来自专栏学习

    《JavaSE》---11.<面向对象系列之(封装)>

    前言 本篇博客主要讲解Java基础语法中的 面向对象系列之 封装的概念、四大访问修饰符的详细解释、封装成员变量配套的setter和getter方法及快捷键的使用、封装的意义。 封装的意义: 封装的主要作用在于对外隐藏内部实现细节,提高程序的安全性。 为了更好的讲封装,我们先引入包的概念。 二、封装 2.1封装的概念: 将数据和操作数据的方法进行有机结合,隐藏对象的属性和实现细节仅对外公开接口进行交互 (比如我们的电脑主机,只提供了一些接口供我们用户使用,而用户不需要去管内部是怎样实现的 ) 2.2封装的代码示例: (被private修饰就相当于封装。) 总结 1.什么是封装? 对类的成员进行隐藏,通过关键字private,只是对类外提供公开的接口来进行访问。 2.封装的意义? 隐藏类的实现细节,从而达到安全性。

    34110编辑于 2024-09-24
  • 来自专栏移动大前端

    JS示例11-ajax对象(未封装请求)

    DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>未封装请求</title> <script>

    2.9K10发布于 2019-11-07
  • 来自专栏web前端

    JavaScript基础学习--11 定时器管理、函数封装

    Demos:   https://github.com/jiangheyan/JavaScriptBase 一、定时器管理      1、var timer = null;  改为  oDiv.t

    1.2K80发布于 2018-01-09
  • 来自专栏10km的专栏

    C++11 JNI开发中RAII的应用(二)--JNI函数封装

    在上一节《C++11 JNI开发中RAII的应用(一)》中我们已经有了一些基本的RAII封装工具,本节就简单了,就是根据需要把一些常用的JNIEnv函数封装成更方便使用的模板函数。 raii_NewGlobalRef raii_NewGlobalRef函数顾名思义,就是封装JNIEnv::NewGlobalRef,将一个本地引用的jobject转为全局引用封装在raii_var中。 /* 封装JNIEnv::NewGlobalRef 返回jobject对象全局引用(RAII管理) */ template<typename T=jobject,typename TYPE=typename raii_FindClass_LocalRef & raii_FindClass_GlobalRef raii_FindClass_LocalRef 和raii_FindClass_GlobalRef,封装了 = name); return raii_jobject_env(&JNIEnv::FindClass, name); } /* 封装JNIEnv::FindClass

    89740编辑于 2022-05-07
  • 来自专栏全栈程序员必看

    SDK封装_java封装

    本文主要讲解java封装jar包的过程,一个简单的demo,方便大家入手学习打包jar包。

    2.8K30编辑于 2022-11-03
  • 来自专栏撸码那些事

    封装那些事】 缺失封装

    缺失封装 没有将实现变化封装在抽象和层次结构中时,将导致这种坏味。 表现形式通常如下: 客户程序与其需要的服务变种紧密耦合,每当需要支持新变种或修改既有变种时,都将影响客户程序。 为什么不能缺失封装? 开闭原则(OCP)指出,类型应对扩展开放,对修改关闭。也就是说应该通过扩展(而不是修改)来改变类型的行为。没有在类型或层次结构中封装实现变化时,便违反了OCP。 缺失封装潜在的原因 未意识到关注点会不断变化 没有预测到关注点可能发生变化,进而没有在设计中正确封装这些关注点。 因为变化点混在了一起,没有分别进行封装。 使用桥接模式进行封装: 使用桥接模式,分别封装这两个关注点的变化。现在要引入新内容类型Data和新加密算法TDES,只需要添加两个新类。

    1.4K150发布于 2018-05-16
  • 来自专栏撸码那些事

    封装那些事】 缺失封装

    缺失封装 没有将实现变化封装在抽象和层次结构中时,将导致这种坏味。 表现形式通常如下: 客户程序与其需要的服务变种紧密耦合,每当需要支持新变种或修改既有变种时,都将影响客户程序。 为什么不能缺失封装? 开闭原则(OCP)指出,类型应对扩展开放,对修改关闭。也就是说应该通过扩展(而不是修改)来改变类型的行为。没有在类型或层次结构中封装实现变化时,便违反了OCP。 缺失封装潜在的原因 未意识到关注点会不断变化 没有预测到关注点可能发生变化,进而没有在设计中正确封装这些关注点。 因为变化点混在了一起,没有分别进行封装。 使用桥接模式进行封装: 使用桥接模式,分别封装这两个关注点的变化。现在要引入新内容类型Data和新加密算法TDES,只需要添加两个新类。

    1.4K30发布于 2018-06-21
  • 来自专栏Python学习

    封装

    前言 在面向对象编程(OOP)中,封装是一个重要的概念,旨在保护数据并限制对对象内部状态的直接访问。在 Python 中,私有成员是实现封装的关键工具。 本章详细讲解了封装的基本概念以及私有成员的用法。 本篇文章参考:黑马程序员 一、基本概念 面向对象编程是一种许多编程语言支持的编程思想。 面向对象的三大特性: 封装 继承 多态 封装:将现实世界的事物用类来描述,具体表现为属性和方法。 通俗来讲,封装就是将事物的属性和行为整合到一个类中,通过成员变量和成员方法来实现对现实世界事物的描述。

    34321编辑于 2024-08-06
  • 来自专栏产品能力

    封装

    System.out.println("我是:"+name+",今年:"+age+"岁"); 08 } 09 public void setName(String str)  //设定setName方法 10 { 11 36 // 在这里将p对象中的年龄赋值为-25岁 37 p.setAge(-25) ; 38 // 调用Person类中的talk()方法 39 p.talk() ; 40 } 41 } 封装属性 :private 属性类型 属性名 封装方法:private 方法返回类型 方法名称(参数) 01 class Person 02 { 03 private String name ; 04 private private void talk() 06 { 07 System.out.println("我是:"+name+",今年:"+age+"岁"); 08 } 09 public void say() 10 { 11

    79020编辑于 2022-12-01
  • 来自专栏撸码那些事

    封装那些事】 未利用封装

    未利用封装 客户代码使用显式类型检查(使用一系列if-else或switch语句检查对象的类型),而不利用出层次结构内已封装的类型变化时,将导致这种坏味。 为什么要利用封装? 我们这里讨论的是:要检查的类型都封装在了层次结构中,但没有利用这一点,即使用显式类型检查,而不依赖于动态多态性。这将导致如下问题: 显式类型检查让客户程序和具体类型紧密耦合,降低了设计的可维护性。 未利用封装潜在的原因 以过程型思维使用面向对象语言 开发时的思维是以代码执行过程为导向,自然而然就会使用if-else语句和switch语句。 未应用面向对象原则 无力将面向对象的概念付诸实践。 示例分析一 根为抽象类DataBuffer的层次结构封装了各种基本数据结构型数组,DataBuffer的子类DataBufferByte、DataBufferUShort、DataBufferInt支持相应的基本数据类型数组 这种情况反映出来的问题就是没有利用封装,已经有了层次结构,却没有予以利用。没有面向接口编程,每个地方面向的都是具体的实现类,每个地方都需要判断实例的类型才可以进行下一步的动作。

    1.5K40发布于 2018-06-21
  • 来自专栏用户4381798的专栏

    封装

    专业的人专业造轮子,将橡胶、钢材等原材料封装成成品车轮,供给他人使用。 这就是封装的法则,人们通过封装,将现实世界繁复复杂的事物简化为抽象世界的一个概念,并且在概念之上层层运用封装法则,实现无与伦比的意念世界的上层建筑。

    1.1K30发布于 2020-08-28
  • 来自专栏撸码那些事

    封装那些事】 泄露的封装

    泄露的封装 抽象通过公有接口(方法)暴露或泄露实现细节时,将导致这种坏味。需要注意的是,即使抽象不存在“不充分的封装”坏味,其公有接口也有可能泄露实现细节。 为什么不能泄露封装? 为实现有效封装,必须将抽象的接口(即抽象的内容)和实现(即抽象的方式)分离。为遵循隐藏原则,必须对客户程序隐藏抽象的实现方面。 泄露的封装的潜在原因 不知道该隐藏哪些东西 开发人员通常会在无意之间泄露实现细节。 使用细粒度接口 类的公有接口直接提供了细粒度的方法,这些细粒度的方法通常会向客户程序暴露不必要的实现细节。 这就是泄露的封装的潜在原因——使用细粒度接口。

    1.1K20发布于 2018-06-21
  • 来自专栏摸鱼网工

    数据封装与解封装流程

    而是由下层逐层封装来完成对等层交换数据,这就是我们数据的封装。 而解封装,就是上层需要与下层进行通信,于是逐层解封装至目标层进行通信。 这里的上下层就是指的网络参考模型的层次 上面可能说的有点复杂不易于理解,可以记住下面这句话: 数据发送时,从上至下逐层封装 数据接收时,从下至上逐层解封装 只有拆除外层封装,才能看到内层封装 TCP/IP 五层模型对应每层格式 所遵循的层次 数据封装的流程 封装与解封装流程 1.数据从应用层发出,进入传输层 在传输层会为我们数据打上TCP or UDP头部,里面包含了我们数据的源端口、目的端口,到这层的时候 ,我们数据已经被封装成了数据段。 注意,数据的封装、解封装都是逐层进行的,不会出现跃层通信 数据的解封装封装原理一样,只不过顺序进行了颠倒,从物理层的二进制数据流开始逐层解封装直至应用层 小节 本篇了解了我们数据封装与解封装的流程,

    4.6K20编辑于 2022-12-16
  • 来自专栏撸码那些事

    封装那些事】 未利用封装

    未利用封装 客户代码使用显式类型检查(使用一系列if-else或switch语句检查对象的类型),而不利用出层次结构内已封装的类型变化时,将导致这种坏味。 为什么要利用封装? 我们这里讨论的是:要检查的类型都封装在了层次结构中,但没有利用这一点,即使用显式类型检查,而不依赖于动态多态性。这将导致如下问题: 显式类型检查让客户程序和具体类型紧密耦合,降低了设计的可维护性。 未利用封装潜在的原因 ###以过程型思维使用面向对象语言 开发时的思维是以代码执行过程为导向,自然而然就会使用if-else语句和switch语句。 示例分析一 根为抽象类DataBuffer的层次结构封装了各种基本数据结构型数组,DataBuffer的子类DataBufferByte、DataBufferUShort、DataBufferInt支持相应的基本数据类型数组 这种情况反映出来的问题就是没有利用封装,已经有了层次结构,却没有予以利用。没有面向接口编程,每个地方面向的都是具体的实现类,每个地方都需要判断实例的类型才可以进行下一步的动作。

    1.3K90发布于 2018-05-18
  • 来自专栏撸码那些事

    封装那些事】 泄露的封装

    泄露的封装 抽象通过公有接口(方法)暴露或泄露实现细节时,将导致这种坏味。需要注意的是,即使抽象不存在“不充分的封装”坏味,其公有接口也有可能泄露实现细节。 为什么不能泄露封装? 为实现有效封装,必须将抽象的接口(即抽象的内容)和实现(即抽象的方式)分离。为遵循隐藏原则,必须对客户程序隐藏抽象的实现方面。 ##泄露的封装的潜在原因 不知道该隐藏哪些东西 开发人员通常会在无意之间泄露实现细节。 使用细粒度接口 类的公有接口直接提供了细粒度的方法,这些细粒度的方法通常会向客户程序暴露不必要的实现细节。 这就是泄露的封装的潜在原因——使用细粒度接口。

    1.2K150发布于 2018-05-15
  • 来自专栏知无不言 - 畅所欲言

    Mybatis 手撸专栏|第11章:流程解耦,封装结果集处理器

    本文是《Mybatis 手撸专栏》的第11章,将介绍如何解耦流程并封装结果集处理器。我们将通过代码示例演示如何通过封装结果集处理器,实现更灵活、可扩展的数据处理流程。 引言--欢迎来到《Mybatis 手撸专栏》的第11章!在之前的章节中,我们已经学习了很多关于Mybatis框架的核心概念和用法。本章中,我们将围绕流程解耦和结果集处理器展开讨论。 通过解耦流程和封装结果集处理器,我们可以达到代码复用和提高开发效率的目的。本文将详细介绍如何使用Java代码实现流程解耦和封装结果集处理器,并通过Markdown格式展示相关代码和解释。 通过流程解耦,我们可以将每个步骤的实现独立封装,并通过组合这些步骤的方式来构建整个数据处理流程,从而实现灵活的流程控制和代码复用。2. 如何封装结果集处理器? 总结本文介绍了如何使用流程解耦和封装结果集处理器来实现更灵活、可扩展的数据处理流程。通过将复杂的流程拆分成独立的步骤,并封装结果集处理器,我们可以提高代码的可读性、可维护性和灵活性。

    32020编辑于 2023-11-09
  • 来自专栏IT大咖说

    Dapper的封装、二次封装、官方扩展包封装,以及ADO.NET原生封装

    所以我们先来看看使用ADO.NET的时候我们怎么实现代码复用的封装。 ◆ 一、ADO.NET的封装案例 利用反射对ADO.NET进行封装,看代码: DBHelper.cs:这边用的是mysql,如果要用sqlserver将MySqlConnection换成SqlConnection } } } ◆ 三、Dapper的二次封装(基于上一个) 利用反射对Dapper进行二次封装:DapperSuperHelper.cs,通过继承继承dapper的封装,我们可以即可用使用原始封装又可以使用通用的对单表的增删改查 可以看到我上面的二次封装和官方的封装其实差不多的功能,不过我还多了一个分页,嘿嘿。 大家也可以自行封装

    3.4K30编辑于 2022-03-14
  • 来自专栏CodeGuide | 程序员编码指南

    《Mybatis 手撸专栏》第11章:流程解耦,封装结果集处理器

    二、目标 延续着上一章节,我们对参数的封装和调用,使用了策略模式进行解耦处理,本章节将对执行完查询的结果进行封装处理。 如图 11-1 所示 图 11-1 简单的结果集处理 对于结果集的封装处理,其实核心在于我们拿到了 Mapper XML 中所配置的返回类型,解析后把从数据库查询到的结果,反射到类型实例化的对象上。 图 11-2 返回类型 再有了这个目标的前提下,就可以通过解析 XML 信息时封装返回类型到映射器语句类中,MappedStatement#resultMaps 直到执行完 SQL 语句,按照我们的返回结果参数类型 详细设计如图 11-3 所示 图 11-3 封装结果集处理器 首先我们在解析 XML 语句解析构建器中,添加一个 MapperBuilderAssistant 映射器的助手类,方便我们对参数的统一包装处理 ,如图 11-4 所示 图 11-4 封装结果集处理器核心类关系 在 XML 语句构建器中使用映射构建器助手,包装映射器语句入参、出参的封装处理。

    58820编辑于 2022-06-13
  • 来自专栏全栈程序员必看

    vue封装组件思路_前端封装组件

    undefined vue中v-model动态生成的实例详解 JavaScript循环遍历map数据 vue父组件调用子组件方法 vue 组件继承问题 vue2.0 如何自定义组件(vue组件的封装

    1.2K40编辑于 2022-11-09
领券