类与对象
类的定义语法
Account 访问修饰符+class+类名语法
成员变量定义
用于存储对象的状态数据,需设置访问修饰符(public/private 等)控制访问权限
成员方法定义
方法定义包含返回值类型、方法名、参数列表和方法体,是实现业务功能的核心
继承
父类与子类关系
父类(基类)是共性的抽象,如Account封装了所有账户的通用属性(编号、姓名)和方法(存取款)
子类(派生类)是具体实现,如CreditAccount在父类基础上添加「透支额度」属性,实现个性化功能。
base关键字使用
类构造方法中用base()调用父类构造方法
比如CreditAccount的构造方法中base(id, name),可复用父类的初始化逻辑,避免代码重复。
方法重写规则
子类可重写父类的虚方法 / 抽象方法,但需遵循「签名一致」规则(方法名、参数列表、返回值一致)
父类方法需用virtual/abstract标记,子类用override标记
访问修饰符控制
通过public/private/protected控制父类成员的访问权限,比如protected修饰的成员仅能被子类访问,保证数据封装性
多态
虚方法定义
父类中用virtual标记可被重写的方法,
为子类重写预留接口。
重写方法实现
子类用override重写父类虚方法
抽象类应用
抽象类用abstract定义,包含抽象方法(无方法体)
接口实现多态
接口是更纯粹的抽象,仅定义方法签名,多个类实现同一接口时,可通过接口引用调用不同类的实现方法
DebitAcct和CreditAccount分别实现该方法,实现开户功能的多态。
方法重载
参数类型不同
比如AddMoney()方法,支持int类型(整数金额)和double类型(带小数金额)的存款参数,满足不同输入场景
参数个数不同
比如OpenAccount()方法,重载为「仅传姓名」和「传姓名 + 开户金额」两个版本,适配不同开户流程
返回值类型
C# 中方法重载不依赖返回值类型,仅靠参数列表区分,这点需注意(若仅返回值不同,编译器会判定为重复定义)
构造函数重载
类的构造函数也可重载,比如Account的构造函数,重载为「无参构造」和「带账户编号、姓名的构造」,满足不同的对象初始化需求
异常处理
try-catch块使用
try块包裹可能抛出异常的代码(如用户输入非数字的金额)
catch块捕获并处理异常
throw抛出异常
主动抛出业务异常
用throw new Exception("余额不足")抛出异常,交由上层catch处理,保证业务规则的严格执行
自定义异常类
允许继承Exception类创建业务专属的异常
相比通用的Exception,自定义异常能更精准地标识业务错误类型
finally块作用
finally块跟在try-catch后,无论是否抛出异常,都会执行,常用于释放资源
接口
接口定义语法
接口是 C# 中实现多态和代码解耦的重要方式
银行卡项目中设计灵活业务模块的核心
思维导图里的子节点覆盖了接口的定义、实现和扩展规则
接口实现方式
实现接口,必须实现接口的所有成员(否则类需定义为抽象类)
显式接口实现
当类实现多个接口且存在同名方法时,用「接口名。方法名」显式实现,避免冲突。<br>
接口继承关系
接口支持多继承,一个接口可继承多个其他接口,整合多个行为规范