Java面向对象

活动地址:CSDN21天学习挑战赛

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。

面向对象概述

3种主流编程范式(风格)

  • 面向过程
  • 面向对象
  • 函数式编程

面向对象

  • 最主流:流行的编程语言大部分是面向对象编程语言
  • 特性丰富:可以实现很多复杂的设计思路,是很多设计原则,设计模式的基础

面向对象4大特性

封装

  • 概念:也叫作信息隐藏或者数据访问保护

  • 特点:需要编程语言提供权限访问控制语法来支持,例如java中的private、protected、public关键字

  • 意义

    • 保护数据不被随意修改,提高代码的可维护性
    • 仅暴露有限的必要接口,提高类的易用性

抽象

  • 概念:隐藏方法的具体实现

  • 意义

    • 修改实现不需要改变定义
    • 处理复杂系统的有效手段,能有效过滤不必要关注的信息

继承

  • 概念:表示类之间的is-a关系

  • 特性:编程语言需要提供特殊的语法机制来支持

  • 2中模式

    • 单继承:一个子类只能继承一个父类
    • 多继承:一个子类可以继承多个父类
  • 意义:解决代码复用问题

多态

  • 概念:子类可以替换父类,在实际的代码运行过程中,调用子类的方法实现
  • 特性:编程语言需要提供特殊语法机制来支持,比如继承、接口类
  • 意义:提高代码的扩展性和复用性,是很多设计模式、设计原则、编程技巧的代码实现基础

面向过程VS面向对象

  • 更能应对复杂类型的程序开发

  • 具有更加丰富的特性(封装、抽象、继承、多态)

  • 更加人性化、更加高级、更加智能

面向对象分析、设计与编程

  • 面向对象分析:搞清楚做什么,产出详细的需求描述

  • 面向对象设计:搞清楚咋么做,将需求描述转化为具体的类

  • 面向对象编程:将分析和设计的结果翻译成代码

接口VS抽象类

  • 如果要表示一种is-a的关系,并且是为了解决代码复用问题,就用抽象类

  • 如果表示一种has-a关系,并且为了解决抽象而非代码复用问题,就用接口

基于接口而非实现编程

  • 将接口和实现相分离,封装不稳定的实现,暴露稳定的接口

  • “基于抽象而非实现编程”,抽象是提高代码扩展性、灵活性、可维护性最有效的手段之一

多用组合少用继承

  • 为什么少用继承?

    • 继承如果层次过深、过复杂,会影响代码的可维护性
  • 组合相比继承的优势:

    • 继承的3个作用

      • 表示is-a关系

      • 支持多态特性

      • 代码复用

      • 组合能解决层次过深、过复杂的继承关系影响代码可维护性的问题

  • 如何判断使用组合还是继承

    • 类之间的继承结构稳定,层次比较浅,关系不复杂就使用继承,反之使用组合

贫血模型VS充血模型

  • 基于贫血模型的传统开发模式:面向过程

    • 适合业务不复杂的系统开发
  • 基于充血模型的ODD开发模式:面向对象

    • 适合业务复杂的系统开发
  • 两者主要区别在Service层,Controller层和Repository层的代码基本上相同

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

√沫影

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值