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

你可能感兴趣的:(#,C#基础,c#,开发语言)