• 3.1 面向对象的思想


     

     思维导图:

    **第3章 面向对象(上)**

    **目录**
    1. 面向对象的思想
    2. 封装性
    3. 继承性
    4. 多态性

    **3.1 面向对象的思想**
    - 面向对象是一种编程思想,与现实生活中的事物和它们之间的关系相对应。
    - 面向过程分析问题,通过函数实现步骤;面向对象将问题中的事物划分为对象,并通过调用对象的方法来解决问题。
    - 当程序功能改变时,只需修改部分对象,使得代码更易于维护。
    - 面向对象的三大特性:封装性、继承性和多态性。

    **3.2 封装性**
    - 核心思想是把对象的属性和行为视为一个整体。
    - 封装有两层含义:
        1. 将属性和行为“组合”在一起。
        2. 信息隐藏,如学开车时只需知道如何操作汽车,不必知道汽车内部工作原理。

    **3.3 继承性**
    - 描述的是类与类之间的关系。
    - 通过继承,可以在已有类基础上扩展功能。
    - 如有一个汽车类,轿车类不仅包含汽车的特性和功能,还可以增加轿车特有功能。轿车类可继承汽车类并添加其特性和方法。
    - 继承增强了代码的复用性,提高了开发效率,也方便了程序维护与扩展。

    **3.4 多态性**
    - 一个类的属性和方法被其他类继承后,它们可以具有不同的数据类型或表现出不同的行为。
    - 如汽车和飞机都是交通工具,但汽车在陆地行驶,飞机在天空飞行。
    - 多态使程序更抽象和便捷,帮助开发人员设计程序时进行分组协同开发。

    **学习目标:**
    - 了解面向对象思想,掌握其三大特性。
    - 能够定义类,创建和使用对象,以及通过对象访问其属性和方法。
    - 了解Java的4种访问控制权限和如何在类中使用它们。
    - 熟悉类的封装特性,了解为什么要封装以及如何实现封装。
    - 能够定义和重载构造方法,使用`this`关键字调用属性、方法及构造方法。
    - 了解代码块的应用,特别是普通代码块和构造块。
    - 熟悉`static`关键字的使用,了解静态属性、静态方法和静态代码块的特点。

    **小结:**
    面向对象的思想不仅是理论知识,还需要通过大量实践来真正领悟和应用。

    我的理解:

    面向对象编程(OOP)的三大特性:封装性、继承性和多态性,是支撑OOP的核心概念。为了更好地理解它们,我们可以通过以下方式来深入探讨:

    **1. 封装性 (Encapsulation):**

    **概念**: 
    封装是面向对象编程中的一种将数据(属性)和与数据相关的操作(方法)结合在一起的机制,确保对象的内部结构的完整性和安全性。

    **类比**:
    想象一个真实世界的例子:电视遥控器。我们使用按钮来更改频道或调整音量,但我们不知道这背后的复杂电子工作原理。这就是封装——我们只与暴露出的接口交互,而不必关心其内部实现。

    **意义**: 
    - 保护内部数据不被外部随意修改。
    - 简化外部对对象的访问,只暴露必要的操作和功能。
    - 提高代码的可维护性和安全性。

    **2. 继承性 (Inheritance):**

    **概念**:
    继承允许我们创建一个新类,继承并使用已有类的属性和方法,同时还可以添加新的属性和方法或覆盖现有的功能。

    **类比**: 
    想象一个家族,孩子会继承父母的某些特征,如眼睛的颜色或发型。但孩子也可能有他们自己独特的特点。在编程中,"父母"是父类,而"孩子"是子类。

    **意义**: 
    - 代码重用:子类可以复用父类的代码,避免重复编写。
    - 创建类的层次结构,使代码组织得更结构化。
    - 为多态性提供基础。

    **3. 多态性 (Polymorphism):**

    **概念**:
    多态是指允许你使用一个接口表示多种数据类型。在OOP中,多态性使得不同的对象可以被视为其父类或接口的对象。

    **类比**: 
    考虑动物园中的动物。每个动物都可以"说话"(例如狗叫、猫喵喵叫),但它们所发出的声音是不同的。在编程中,你可能有一个方法叫做`speak()`,但根据对象是狗还是猫,它会有不同的实现。

    **意义**: 
    - 代码灵活性:使得函数或方法可以对不同的对象进行操作。
    - 支持扩展:当添加新的子类时,不需要修改现有代码来支持新的对象。
    - 提高代码的维护性和组织结构。

    总之,这三大特性帮助程序员编写更加模块化、可维护和可扩展的代码,也让代码更接近现实世界的模拟。

     

     

  • 相关阅读:
    SpringCloud案例day01.md
    Elastic Search 浅浅认识 快速使用 keyword 和 text 的区别之处 spring boot 集成案例 es 增删改查
    【JavaSE】多线程篇(五)线程专项练习题
    神经网络入门教程,现代神经网络教程
    06-HTTPS单向认证及Java案例
    【stm32芯片设置解惑】:stm32F103系列的开漏输出和推挽输出的区别
    《QDebug 2022年11月》
    元宇宙营销面临的三大挑战
    如何计算win/tai/loss in paired t-test
    2020-ViT ICLR
  • 原文地址:https://blog.csdn.net/tang7mj/article/details/133820808