IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 【设计模式之旅】05|封装、抽象、继承、多态分别可以解决那些编程问题? -> 正文阅读

[Java知识库]【设计模式之旅】05|封装、抽象、继承、多态分别可以解决那些编程问题?

前言:上一节我们简单提到了面向对象的四大特性,这一节我们聊一聊每个特性存在的意义和目的,以及他们能够解决那些编程问题。

封装(Encapsulation)

封装也叫信息隐藏或者数据访问保护。类通过暴露有效的访问接口,授权外部仅能通过类提供的方式来访问内部信息或者数据。对于封装的特性,我们需要编程语言本身提供的一套机制来支持即访问权限控制。换句话说如果不对类内部的属性进行访问权限控制,属性可以被随意地修改,而且修改逻辑可能散落在代码的任意角落,势必会影响代码的可读性,可维护性,同时很容易造成数据的不一致。除此之外类仅仅暴露有限的接口,也能提高类的易用性。而且从业务角度考虑,只暴露封装好的接口,对业务不熟悉的人来说也是很友好的,减少了出错的概率。

抽象(Abstraction)

在java中我们通常借助接口和抽象类这两种语法机制来实现抽象这一特性。但是实际上抽象是非常容易实现的,并不依赖接口类和抽象类来实现抽象。其实类中的方法就是一种抽象,通过函数来包裹实现逻辑本身就是一种抽象,调用和使用函数时我们并不需要去来了解其实现逻辑,只需通过函数名、注释或文档等,了解其提供了什么功能,就可以直接使用了。而抽象的意义就是我们只需将有限的精力去关注功能而非实现的思路,正好能帮助我们大脑过滤掉许多非必要信息。

继承(Inheritance)

继承是用来表示类之间is-a的关系。继承本身是需要编程语言支持的。从继承关系上来说继承可以分为两种模式,多继承和单继承。继承最大的好处就是代码复用。继承的概念很好理解,也很容易使用。不过,过度使用继承,继承层次过深或过于复杂就会导致代码的可读性、可维护性就变差,另外子类和父类高度耦合,修改父类的代码会直接影响到子类。所以继承这个特性也是一个非常有争议的一个特性,很多人认为它是一种反模式,尽量少用或者不用。

多态(Polymorphism)

多态是指子类可以替换父类,调用子类的方法实现。多态特性能提高代码的扩展性和可复用性。理论上只要两个类具有相同的方法,就可以实现多态,并不要求两个类之间有任何关系,这就是所谓的duck-typing,是一些动态语言所持有的特殊语法机制,而想Java这样的静态语言,通过集成实现多态特性,必须要求两个类之间有继承关系,通过接口实现,类必须实现接口。同时,多态是很多设计模式、设计原则、编程技巧的代码实现基础,比如策略模式、基于接口而非实现编程、依赖倒置原则、里氏替换原则,利用多态去掉冗长的if-else语句等

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-01-28 11:45:25  更:2022-01-28 11:46:52 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 10:01:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码