Unity中关键字的使用之——Virtual

本文探讨了Virtual(虚方法)与Abstract(抽象方法)的区别及虚方法的使用。介绍了虚方法在基类定义时用Virture关键字,派生类用override重写,且方法不能私有。还通过测试得出结论,如Virtual只能声明方法,Abstract可声明类和方法等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇中,介绍了Abstract(抽象方法),那么Virtual(虚方法)与抽象方法的区别是什么呢?虚方法怎样用呢?下面是我个人的理解

Virture也是在基类定义方法时候使用的关键字,派生类中同样使用override进行重写。下面看实现

这样就完成一个方法虚方法的实现,只要子类继承之后,就可以拥有该方法,该方法不能是私有的,使用Override同样完成了该方法的重写。

通过测试的到一下结论:

一,Virtual只能用来对方法进行声明,Abstract可以对类以及方法声明

二.被Virtual声明的基类,子类继承时,可以复写也可以不用覆写,二Override声明的必须重写(因为没有方法体),且必须用在抽象类中

### Unity 中 `override` 的用法 在 Unity 开发中,`override` 关键字主要用于子类重新定义继承自父类的方法行为。这通常发生在扩展 Unity 提供的基础类(如 `MonoBehaviour` 或 `UnityPlayerActivity`)时[^1]。通过 `override`,开发者可以修改这些基础方法的功能以适应特定需求。 #### 基本概念 `override` 实现了面向对象编程中的多态特性。当一个类声明了一个虚拟方法(使用 `virtual` 关键字),其派生类可以通过 `override` 来提供该方法的新实现[^3]。这种方式使得程序能够在运行时动态调用适合当前类型的版本。 #### 示例代码 下面是一个简单的例子,在 Unity 脚本中展示如何使用 `override`: 假设有一个基本的游戏对象控制器类 `BaseController` 和它的派生类 `CustomController`: ```csharp // 定义一个带有 virtual 方法的基类 BaseController public class BaseController : MonoBehaviour { public virtual void PerformAction() { Debug.Log("Performing default action from BaseController."); } } // 创建一个继承 BaseController 并覆盖 PerformAction 方法的子类 CustomController public class CustomController : BaseController { // 使用 override 修改 PerformAction 行为 public override void PerformAction() { Debug.Log("Performing custom action from CustomController."); } } ``` 在这个场景下,如果实例化的是 `CustomController` 对象并调用了 `PerformAction()` 方法,则会执行被重写的逻辑而不是原始的默认实现。 #### 应用于 Unity 生命周期函数 除了上述情况外,开发人员经常会在自己的脚本里覆写来自 `MonoBehaviour` 类的一些重要生命周期回调函数,比如 `Start()`, `Update()`, 等等。这是因为它们本身已经被标记为了可重写的虚拟成员。 例如: ```csharp using UnityEngine; public class ExampleScript : MonoBehaviour { private int counter = 0; // Override the Update method to increment a counter every frame. protected override void Update() { base.Update(); // Call original implementation first counter++; if (counter % 60 == 0) Debug.Log($"Frame count reached {counter}"); } } ``` 注意这里我们还调用了 `base.Update()` 来确保任何可能存在的原版功能得以保留[^4]。 ### 总结 综上所述,`override` 在 Unity 编程环境中扮演着至关重要的角色,它不仅增强了代码灵活性而且促进了良好的设计模式实践——即遵循开放封闭原则(Open/Closed Principle),让软件易于维护和扩展的同时保持稳定可靠。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值