• Java面向对象


    面向对象

    面向对象与面向过程

    面向对象 (Object Oriented,OO) 的思想对软件开发相当重要,它的概念和应用甚至已超越了程序设计和软件开发,扩展到如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD 技术、人工智能等领域。面向对象是一种对现实世界理解和抽象的方法,是计算机编程技术发展到一定阶段后的产物。

    面向对象三大特性

    面向过程 (Procedure Oriented) 是一种以过程为中心的编程思想。这些都是以什么正在发生为主要目标进行编程,不同于面向对象的是谁在受影响。与面向对象明显的不同就是封装、继承、类。

    笔者的理解:“面向过程”是做一件事,“面向对象”是造一堆东西。

    形象说明

    我们用把大象装进冰箱进行说明。

    面向过程:

    为了把大象装进冰箱,需要3个过程。

    1. 把冰箱门打开(得到打开门的冰箱)

    2. 把大象装进去(打开门后,得到里面装着大象的冰箱)

    3. 把冰箱门关上(打开门、装好大象后,获得关好门的冰箱)

    每个过程有一个阶段性的目标,依次完成这些过程,就能把大象装进冰箱。

    面向对象:

    为了把大象装进冰箱,需要做三个动作(或者叫行为)。

    每个动作有一个执行者,它就是对象。

    代码实现

    面向对象三大基本特性

    封装

    隐藏实现

    在这里插入图片描述

    继承

    接口的重用。

    通过继承创建的新类称为“子类”或“派生类”,被继承的类称为“基类”、“父类”或“超类”。继承的过程,就是从一般到特殊的过程。

    在这里插入图片描述

    多态

    所谓多态就是指一个类实例的相同方法在不同情形有不同表现形式。

    在这里插入图片描述

    面向对象设计目的

    强内聚、低耦合,从而使系统

    • 易扩展 - 易于增加新的功能
    • 更强壮 - 不容易被粗心的程序员破坏
    • 可移植 - 能够在多样的环境下运行
    • 更简单 - 容易理解、容易维护

    面向对象的五大基本原则

    单一职责原则(Single-Responsibility Principle)

    其核心思想为:一个类,最好只做一件事,只有一个引起它的变化。

    职责过多,可能引起它变化的原因就越多,这将导致职责依赖,相互之间就产生影响,从而大大损伤其内聚性和耦合度。

    专注,是一个人优良的品质。同样的,单一也是一个类的优良设计

    开放封闭原则[(Open-Closed principle)

    其核心思想是:软件实体应该是可扩展的,而不可修改的。也就是,对扩展开放,对修改封闭的。

    对于扩展是开放的 (Open for extension)。

    对于更改是封闭的 (Closed for modification )。

    总之,不需要修改软件实体(类、模块、函数等),就应该能实现功能的扩展

    里氏替换原则(Liskov-Substitution Principle)

    其核心思想是:子类必须能够替换其基类。

    里氏替换原则是关于继承机制的设计原则,违反了Liskov替换原则就必然导致违反开放封闭原则。

    接口分离原则(Interface-Segregation Principle)

    其核心思想是:使用多个小的专门的接口,而不要使用一个大的总接口。

    具体而言,接口隔离原则体现在:接口应该是内聚的,应该避免“胖”接口。一个类对另外一个类的依赖应该建立在最小的接口上,不要强迫依赖不用的方法,这是一种接口污染。

    依赖倒置原则(Dependecy-Inversion Principle)

    其核心思想是:依赖于抽象。

    高层模块不依赖于底层模块,二者都同依赖于抽象;抽象不依赖于具体,具体依赖于抽象。

    创建对象的方式

    1. 使用关键字new一个对象

    2. 使用反射机制

      User user = (User)Class.forName("xxx.xxx.User").newInstance(); 
      User user = User.class.newInstance();
      
      • 1
      • 2
    3. 使用clone方法

    4. 反序列化

  • 相关阅读:
    java开发实际场景之两个map相加
    《Effective Objective-C 2.0》读书笔记——对象、消息、运行期
    计算机毕业设计Java新闻稿件管理系统(源码+系统+mysql数据库+Lw文档)
    python如何进行内存管理
    Centos 7 安装 wget
    分布式.性能优化
    Spring 接口日志切片记录
    【Unity入门计划】基本概念(8)-瓦片地图 TileMap 01
    element ui:常用的组件使用情况记录
    C/C++数据结构——挖沟(Kruskal算法+并查集)
  • 原文地址:https://blog.csdn.net/qq_26347283/article/details/133669797