C#核心(20)密封函数和命名空间
前言
上一节我们学习了一个抽象的但是有助于我们规范编程的知识点,这一节,我们就稍微讲点简单的东西,大家如果以后是要走游戏客户端开发的话,这里的知识点了解就好,因为其实我们游戏开发使用的更多是跟unity相关的c#知识点,有些面向更广泛的应用的东西我们是用不上的,因为引擎已经帮我们集成了,我们只用用别人的工具就行。
但是也不能完全不知道,了解这些有利于你去掌握整个的语言框架。
那么废话不多说,就开始我们今天关于密封函数和命名空间的讲解吧。
密封函数
基本概念
用密封子sealed修饰的重写函数
作用
让虚方法或者抽象方法之后不再被重写。
如果读者你还记得博主之前对密封类的描述,那应该你也记得我当时对密封类的说法是:结扎。
对就是不能生儿子,密封函数的道理是一样的。
特点
一般和override一起出现。
举例
这里我们用一个角色职业来为大家讲解这个知识点,这个知识点在你开发demo的时候用的比较少,但是如果合作开发,有些东西你不希望别人重写,就用的上了,这个就涉及到一些框架相关的问题了,这里博主就不多加赘述,如果你感兴趣可以自己去了解一些程序框架设计的问题。
using System;
public class Character
{
public int Health { get; private set; } = 100;
// 密封函数,确保所有派生类不能重写这个方法
public sealed void TakeDamage(int damage)
{
// 统一的受伤逻辑
Console.WriteLine($"{GetType().Name} 正在受到伤害!");
// 对于所有角色,受伤后减少生命值
Health -= damage;
if (Health < 0) Health = 0;
Console.WriteLine($"{GetType().Name} 现在的生命值是 {Health}.");
}
// 虚方法,让派生类可以重写
public virtual void Defend()
{
Console.WriteLine($"{GetType().Name} 正在防御!");
}
}
public class Warrior : Character
{
//你可以尝试一下重写密封类,c#会自动给你报错
public o