当前位置: 首页 > news >正文

C#核心学习(一)面向过程与面向对象编程---初识类和对象

一、到底什么是面向过程编程,什么是面向对象编程?

面向过程编程(Procedural Programming)

定义
        面向过程是一种以过程(函数)​为核心的编程范式,将问题拆解为一系列步骤​(如输入、计算、输出),通过函数依次调用这些步骤来解决问题。

核心思想

  1. 步骤化:程序由函数组成,每个函数完成一个特定任务。
  2. 数据与逻辑分离:数据存储在变量中,函数操作这些数据。

面向对象编程(Object-Oriented Programming, OOP)

定义
        面向对象以对象为核心,将事物抽象为具有属性(数据)​方法(函数)​的对象,通过对象之间的交互解决问题。

核心思想

  1. 封装:将数据和方法打包在对象内部(如Car类包含颜色属性和启动方法)。
  2. 继承:子类复用父类的特性(如ElectricCar继承Car)。
  3. 多态:同一接口不同实现(如不同动物的叫声方法)。

小结:面向过程适合于小型项目,不需要很多代码的交互。面向对象是大型项目开发必不可少的。

维度面向过程面向对象
核心函数和步骤对象和交互
代码组织线性流程(如流水线)模块化(如乐高积木)
典型语言C、FortranJava、Python、C++,C#
适合场景简单任务、数学计算、脚本工具复杂系统、GUI应用、游戏开发

二、面向对象编程第一步---认识类和对象

        那么什么是对象,什么是类呢?类(Class)​对象(Object)​是面向对象编程(OOP)的核心概念,它们的关系如同“设计图纸”与“具体产品”。我们之前每次写程序的时候,其实就是在系统直接给我们提供的模板上的类进行代码的编写。

1. ​什么是类?

  1. 定义:​对象的抽象模板,描述一类事物共有的属性(数据)​行为(方法)​
    1. 例如:汽车设计图定义了所有汽车应有的颜色、品牌(属性),以及启动、刹车(方法)。
  2. 核心作用:通过类可以批量创建具有相同结构和行为的对象。

    //基本概念
    //具有相同的特征 具有相同的行为
    //一类事物的抽象
    //类是对象的模板
    //可以通过类创建出对象
    //类的关键词
    //class

类的主要组成:
  1. 一类对象的特征——成员变量
  2. 一类对象的行为——成员方法
  3. 保护特征——成员属性
  4. 构造函数和析构函数
  5. 索引器
  6. 运算符重载
  7. 静态成员
  8. 事件(Event)​用于定义和触发订阅-通知行为,常用于实现观察者模式。
  9. 委托(Delegate)​本质是方法的类型化指针,可以视为类型安全的函数指针。

        这些东西大家先了解有这些东西,后面我们再慢慢讲述

通常类是直接在命名空间进行申明的。

示例:

    class Machine
    {
        //一类对象的特征——成员变量
        //一类对象的行为——成员方法
        //保护特征——成员属性

        //构造函数和析构函数
        //索引器
        //运算符重载
        //静态成员
    }

2.什么是类对象?

        定义:对象是类的实例,通过 new 关键字创建。
关键操作

  • 使用 new 调用构造函数生成对象。
  • 通过 . 访问对象的属性和方法。

类的申明 和 类对象(变量)申明是两个概念
类的申明 类似枚举 和 结构体的申明 类的申明相当于是申明了一个自定义变量类型
而对象 是 类创建的
相当于申明一个指定类的变量
类创建对象的过程 一般称为实例化对象
类对象都是引用类型的

        如何实例化一个对象呢?

类名 变量名;
类名 变量名 = null;(null代表空)
类名 变量名 = new 类名();

 示例:

 Machine p;
 Machine p2 = null;
 Machine p3 = new Machine();
 Machine p4 = new Machine();

        这样就可以使用这个类啦。

注意!!!

  • 命名规范

    • 类名使用大驼峰​(如 CarElectricCar)。
    • 属性和方法使用大驼峰​(C# 习惯,如 SpeedStartEngine())。
  • 访问修饰符

    • public: 所有代码可见。
    • private: 仅类内部可见(默认)。
    • protected: 类内部和子类可见。
  • 属性 vs 字段

    • 优先使用属性(如 public int Speed { get; set; })而非公共字段,以支持数据验证和封装。

        关于一个类里面应该具有什么,然后应该怎么使用,我们后面再说。我们会逐渐的深入C#的核心!

http://www.dtcms.com/a/99813.html

相关文章:

  • 深入理解MySQL聚集索引与非聚集索引
  • fetch的语法规则及常见用法
  • EasyExcel 与 Apache POI:Java 操作 Excel 的详解
  • 6-1-1 利用AI完成一个可视化看板
  • 如何监控和优化服务器的 CPU 性能
  • 视频联网平台智慧运维系统:智能时代的城市视觉中枢
  • 记录一次Dell服务器更换内存条报错解决过程No memory found
  • 基于微波光子信道的图像传输系统matlab仿真,调制方式采用OFDM+QPSK,LDPC编译码以及LS信道估计
  • 机器学习——集成学习框架(GBDT、XGBoost、LightGBM、CatBoost)、调参方法
  • 计算机基础
  • 睡眠健康领域的智能硬件设备未来的发展趋势
  • C语言术语
  • 算法刷题记录——LeetCode篇(1.3) [第21~30题](持续更新)
  • 分库分表详解
  • 关于c++的FLOYD算法 P2910 [USACO08OPEN] Clear And Present Danger S 题解
  • Spring Boot 整合 RabbitMQ:注解声明队列与交换机详解
  • 高级SQL技巧
  • Linux(8.6)rsync
  • 33. Java 流程控制语句 If-Then-Else 语句
  • [原创](现代C++ Builder 12指南): 如何使用System.JSON?
  • Gitee批量删除仓库
  • 美食菜谱数据集 | 智能体知识库 | AI大模型
  • 力扣HOT100之普通数组:41. 缺失的第一个正数
  • Cannot find a valid baseurl for repo: centos-sclo-sclo/x86_64
  • Vue实现的表格多选方案支持跨页选择和回显功能
  • DNS网络攻击:原理剖析、危害解读与全面防御指南
  • 【Python LeetCode 专题】每日一题
  • 【20期获取股票数据API接口】如何用Python、Java等五种主流语言实例演示获取股票行情api接口之沪深A股实时最新分时MACD数据及接口API说明文档
  • 本地缓存之Guava Cache
  • Linux CentOS 7 搭建我的世界服务器详细教程 (丐版 使用虚拟机搭建)