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

C# 面向对象:基础概念

目录

面向过程 vs 面向对象

1. 思维模式的转换(最难的点)

2. 组织方式:数据与行为的归属

3. 扩展性:开闭原则的体现

对象(Object)

对象的特征:

类(Class)

(1)类的组成:

(2)this关键字

(3)访问修饰符(Access Modifiers)

构造函数

1.无参构造

2.有参构造

3.构造函数重载

在同一个类中,定义多个构造函数,只要参数不同即可。

(1)为什么需要构造函数重载

(2)构造函数重载 + this

4.静态构造函数(Static Constructor)

常见用途

5.私有构造函数(Private Constructor)

静态成员(static)

静态字段

静态方法

静态成员的核心特点

静态类(Static Class)


面向过程 vs 面向对象

维度

面向过程 (POP)

面向对象 (OOP)

核心思想

按步骤解决问题

按“对象”建模世界

组织方式

函数 + 数据

类 + 对象

关注点

“怎么做”

“谁来做”

扩展性

典型语言

C

Java / C# / C++

1. 思维模式的转换(最难的点)

POP(流程思维)

逻辑流:关注每一步如何执行。

OOP(对象思维)

逻辑流:关注哪个对象负责这个动作。

2. 组织方式:数据与行为的归属

POP:数据是“公开的”,函数随意操作数据,容易导致数据被误修改。

OOP:数据(属性)和行为(方法)绑定。外部只能通过“方法”访问数据,这就是封装

3. 扩展性:开闭原则的体现

POP 痛点:增加一个新功能(如新支付方式),往往需要修改原有的if-elseswitch语句,牵一发而动全身。

OOP 优势:通过继承创建新的子类(如WechatPay继承Payment),无需修改原有稳定的父类代码。

面向过程是“我一步步做”,面向对象是“我指挥对象去做”。

对象(Object)

对象是类的实例(Instance)

类(Class):模板 / 蓝图(不占内存)

对象(Object):根据类创建出来的具体实例(占用实际内存

对象 = 数据 + 行为

对象的特征:

1.占用实际内存

类本身只是定义,不分配堆内存

new创建对象时,才在堆内存中为属性分配空间

2.表示现实世界的一个具体事物

类 → “学生”(抽象概念)

对象 → “张三,18岁”(具体个体)

3.每个对象相互独立

不同对象的属性值互不影响

类(Class)

类是对象的模板 /

(1)类的组成:

成员

作用

字段(Field)

存储对象状态

属性(Property)

封装字段

方法(Method)

定义对象行为

构造函数

初始化对象

(2)this关键字

this表示当前对象实例
用途:
区分成员变量与参数
调用当前类的其他构造函数
传递当前对象

用法

示例

区分字段与参数

this.name = name;

调用本类方法

this.Introduce();

调用本类构造函数

: this(...)

(3)访问修饰符(Access Modifiers)

修饰符

说明

public

任何地方可访问

private

仅本类内部

protected

本类 + 子类

internal

同一程序集

protected internal

protected OR internal

构造函数

与类名相同,无返回值,用于初始化对象

new对象时自动调用,完成对象初始状态设置

规则

说明

与类名相同

Person

无返回值

void都不能写

自动调用

new时执行

1.无参构造

未显式定义构造函数时,编译器会默认提供

一旦定义了有参构造,默认无参构造消失

写了有参构造后,若仍需无参构造,必须手动补上。

2.有参构造

用于创建对象时直接赋值

3.构造函数重载

在同一个类中,定义多个构造函数,只要参数不同即可。

方法名相同(必须是类名)

参数个数 / 类型 / 顺序不同

(1)为什么需要构造函数重载

场景

说明

多种初始化方式

有的对象需要完整信息,有的只需要部分

提高灵活性

调用者按需选择

简化对象创建

避免大量重复赋值代码

(2)构造函数重载 +this

this复用构造函数逻辑,减少重复代码

好处:

代码集中

修改一处,全部生效

更易维护

4.静态构造函数(Static Constructor)

特点

说明

自动调用

类首次使用前

无参数

不能带参数

只执行一次

线程安全

无访问修饰符

不能写public/private

常见用途

初始化配置,缓存,日志系统

5.私有构造函数(Private Constructor)

构造函数被private修饰,不能在类外部使用new创建对象。

用途

目的

单例模式

保证全局只有一个实例

工具类

禁止创建类的实例

私有构造函数 vs 公有构造函数:

对比项

私有构造函数

公有构造函数

能否new

不能

使用场景

单例 / 工具类

普通对象

对象数量

0 或 1

任意

设计意图

限制对象创建

允许自由创建

私有构造函数用于禁止类被实例化,常用于工具类(只含静态方法)和单例模式(保证全局只有一个实例)

静态成员(static)

静态成员属于类本身,而不是某个具体的对象。

静态字段

特点

说明

属于类

不依附于对象

所有对象共享

一处改,处处变

生命周期长

程序运行期间一直存在

静态方法

特点

所有对象共享

无需实例化

不能访问非静态成员

静态成员的核心特点

特点

说明

属于类

通过类名访问

无需实例化

不能用new

不能访问非静态成员

不能直接使用实例字段 / 方法

所有对象共享

全局唯一副本

静态成员 vs 实例成员

对比项

静态成员

实例成员

归属

对象

访问方式

类名.成员

对象.成员

是否共享

生命周期

程序级

对象级

静态类(Static Class)

限制:

限制

说明

不能被实例化

不能new

不能有实例成员

只能包含static

自动密封

不能被继承

静态类常见用途 :

工具类(Math、Convert)

扩展方法

全局辅助方法

http://www.jsqmd.com/news/892355/

相关文章:

  • 告别死记硬背:手把手带你用Pytest+Allure重构蓝桥杯自动化测试项目(从Unittest迁移)
  • 多模态大模型技术深度解析:从 CLIP 到 LLaVA 的视觉语言融合原理
  • 从零搭建Python自动化测试环境:手把手教你为蓝桥杯软件测试赛项配置Firefox+WebDriver
  • 2026年5月遵义地区黄金回收白银铂金回收甄选门店推荐TOP1 地址及联系方式 - 五金回收
  • CTF逆向爆破实战:C++进程级暴力框架设计与优化
  • Modelsim SE-64 2020.4仿真不出波形?别慌,这个优化选项的坑我帮你踩了
  • 9.9 元 AI 班宠爆火:游戏化教育新尝试,能否解决师生痛点?
  • 告别‘文件被占用’:手把手教你用Process Explorer的搜索功能解决删除难题
  • Python期末实战:从基础语法到项目开发的通关指南
  • 告别Steam平台限制:WorkshopDL让你在任何平台都能下载创意工坊模组
  • 别信公开付费榜单!2026 年 5 月 GEO 服务商内部实测排名 - 资讯纵览
  • 性能测试从入门到精通,我踩过的10个坑全记录
  • 从零到一:基于Keycloak构建企业级统一身份与门户平台实战
  • SNK施努卡驱动机构总成半自动装配线:人工与自动化协同解决方案
  • 上海交大MINT团队提出Evo - Depth:不增硬件负担,兼顾机器人VLA性能与部署效率
  • 别再折腾桥接了!用VirtualBox的Microsoft环回适配器搞定虚拟机与宿主机互访(Win10/11实测)
  • AI大模型不够聪明?别慌!这个“信息补给站“让它在你的工作中大放异彩!
  • LP3798SC 九重保护全解析:触发条件 + 恢复机制 + 设计避坑
  • Burp Suite HTTPS抓包失败的根源与全平台CA证书配置指南
  • Qt5中comboBox控件更新列表内容
  • BACnet网络层协议控制信息(NPCI)深度解析:从比特位到网络报文
  • 华为发布“韬(τ)定律”,预计2031年高端芯片晶体管密度达1.4纳米水平
  • 怎样3步完成QQ音乐加密格式转换:智能解密工具实战指南
  • 如何高效获取网盘直链下载地址:完整实战指南
  • 部队营区信息化管理系统:联管联控一体化
  • 当 Agent 开始调用 Skill:复杂度是如何被指数放大的?
  • 收藏!211本科985硕拿下淘天AI二面,无代码考察,这些是关键!小白程序员必备学习指南
  • 2026实测:即梦导出不带水印原图方法,即梦去水印设置全攻略
  • 协调控制柜在微电网中的核心地位:数据枢纽、控制核心、安全屏障
  • YOLOv8密集行人识别检测系统(项目源码+YOLO数据集+模型权重+UI界面+python+深度学习+环境配置)