码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【从头构筑C#知识体系】0.2 面向对象


    【系列文章目录】


    文章目录

    • 【系列文章目录】
    • 前言
    • 一、面向对象与面向过程
      • 1.我理解的面向对象
      • 2.我理解的面向过程
      • 3.面向对象与面向过程
    • 二、面向对象的三大特性
      • 1.封装
      • 2.继承
      • 3.多态
    • 三、面向对象的五大原则(SOLID原则)
      • 1.单一职责原则 (SRP)
      • 2.开放封闭原则(OCP)
      • 3.里氏替换原则(LSP)
      • 4.接口隔离原则(ISP)
      • 5.依赖倒置原则(DIP)


    前言

    本篇主要介绍面向对象的编程思想


    一、面向对象与面向过程

    1.我理解的面向对象

    什么叫做对象?
    在现实中,我们所有能看到的一切都可以被称为对象,包括我,也包括正在看文章的你

    而面向对象就是将现实中的事物,通过属性与行为描述给计算机

    2.我理解的面向过程

    什么叫做过程?
    在现实中,我们所做的一切都可以细分为过程,包括该怎么去上班,去哪里上班

    而面向过程就是将现实中实现目标的步骤,通过函数,描述给计算机

    3.面向对象与面向过程

    • 面向过程与面向对象都是编程思想,并非对立,在C# 中,两种编程思想都有用到
    • 面向对象以对象为基础单位,面向过程以函数为基础单位
    • 面向对象擅长设计,面向过程擅长实现

    二、面向对象的三大特性

    1.封装

    类或结构可以指定自己的每个成员对外部代码的可访问性
    可以隐藏不得在类或程序集外部使用的方法和变量,以限制编码错误或恶意攻击发生的可能性。

    • 隐藏对象的属性和实现细节,对外只提供访问的接口
    • 封装提升了代码的安全性

    2.继承

    继承是面向对象的编程的三个主要特征之一。
    通过继承,可以创建新类,以便重用、扩展和修改在其他类中定义的行为。
    其成员被继承的类称为“基类”,继承这些成员的类称为“派生类”。
    派生类只能有一个直接基类。
    但是,继承是可传递的。

    • 子类可以从父类进行继承
    • 多态提升了代码的复用性

    3.多态

    在运行时,在方法参数和集合或数组等位置,派生类的对象可以作为基类的对象处理。 在此多态性下,该对象的声明类型不再与运行时类型相同。

    基类可以定义并实现虚方法,派生类可以重写这些方法,即派生类提供自己的定义和实现。
    在运行时,客户端代码调用该方法,CLR 查找对象的运行时类型,并调用虚方法的重写方法。
    你可以在源代码中调用基类的方法,执行该方法的派生类版本。

    • 多态是同一个类型,在不同的情况下,表现出多种不同行为
    • 多态提升了代码的扩展性

    三、面向对象的五大原则(SOLID原则)

    1.单一职责原则 (SRP)

    • 一个类有且只有一个职责
      一个类的功能要单一

    2.开放封闭原则(OCP)

    • 一个类应该对扩展开放,对修改关闭
      可以增加功能,但不可修改功能

    3.里氏替换原则(LSP)

    • 任何基类可以出现的地方,一定可以替换成子类
      (子类可以扩展父类的功能,但不能改变父类原有的功能)

    4.接口隔离原则(ISP)

    • 类不应该依赖那些它不需要的接口,一个接口所拥有的行为应该尽量少
      设计时应该用多个接口而非使用一个通用接口

    5.依赖倒置原则(DIP)

    • 高层模块不应该依赖低层模块,二者都应该依赖抽象类或接口
      (高层模块不应该使用具体的底层模块)

  • 相关阅读:
    Elasticsearch(四) es集群搭建部署以及节点分片介绍
    相关网址、spring cloud alibaba、spring cloud、spring boot版本对应
    目标检测算法——YOLOv5/YOLOv7改进之更换FReLU激活函数
    T1081 分苹果(信息学一本通C++)
    【C++】day4学习成果:仿写string类等等
    R语言plotly可视化:plotly可视化基础小提琴图(basic violin plot in R with plotly)
    1.ROS操作之从空间编译到功能包编译
    MySQL中的 增 删 查 改(CRUD)
    大一html5期末大作业 :基于html实现传统文化网页设计题材
    UVaLive 6693 Flow Game (计算几何,线段相交)
  • 原文地址:https://blog.csdn.net/ruanlinxi1994/article/details/125408046
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号