C# 封装与继承

封装与继承的概念区别

封装(Encapsulation)是将数据和操作数据的方法绑定在一起,隐藏内部实现细节,仅暴露必要接口。继承(Inheritance)是子类复用父类的属性和方法,并可以扩展或重写。

封装示例代码

csharp 复制代码
public class BankAccount
{
    private decimal _balance; // 私有字段,外部无法直接访问

    // 公开方法提供受控访问
    public void Deposit(decimal amount)
    {
        if (amount > 0)
            _balance += amount;
    }

    public decimal GetBalance() => _balance;
}

继承示例代码

csharp 复制代码
public class Animal // 基类
{
    public void Eat() => Console.WriteLine("Eating...");
}

public class Dog : Animal // 派生类
{
    public void Bark() => Console.WriteLine("Woof!");
}

主要区别对比

封装特点

  • 通过private/protected修饰符控制访问权限
  • 使用属性(get/set)管理字段访问
  • 核心目标是数据保护和接口简化

继承特点

  • 通过:符号实现类继承
  • 支持方法重写(virtual/override
  • 核心目标是代码复用和多态实现

组合使用示例

csharp 复制代码
public class Vehicle // 父类
{
    protected int _speed; // 受保护字段(封装)
    public virtual void Move() => Console.WriteLine("Moving");
}

public class Car : Vehicle // 子类(继承)
{
    private string _model; // 私有字段(封装)
    public Car(string model) => _model = model;

    public override void Move() 
    {
        _speed = 60; // 访问继承的受保护字段
        Console.WriteLine($"{_model} driving at {_speed}km/h");
    }
}
相关推荐
会周易的程序员4 小时前
microLog 后端开发指南
开发语言·c++·物联网·设计模式·日志·iot·aiot
Esaka_Forever4 小时前
Python 完整内存管理机制详解
开发语言·python·spring
星空露珠4 小时前
迷你世界UGc3.0脚本Wiki[剧情动画模块管理接口 Timeline]
开发语言·数据结构·算法·游戏·lua
未来之窗软件服务5 小时前
计算机考试-C语言 应用题—东方仙盟
c语言·开发语言·仙盟创梦ide·东方仙盟·计算机考试
想你依然心痛5 小时前
AtomCode在后端开发中的实战体验:Go微服务从零搭建
开发语言·微服务·golang
我是一颗柠檬5 小时前
【Java项目技术亮点】EXPLAIN深度分析与慢查询治理
android·java·开发语言
luj_17685 小时前
草酸与烟酸对消化及糖代谢的影响解析
服务器·c语言·开发语言·经验分享·算法
fei_sun5 小时前
【SystemVerilog】SystemVerilog与C语言的接口
c语言·开发语言
W是笔名5 小时前
python___容器类型的数据___序列
开发语言·python
☆cwlulu5 小时前
try-throw-catch异常捕获流程
开发语言·c++