Unity中的重载和重写

Posted Z_hongli

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity中的重载和重写相关的知识,希望对你有一定的参考价值。

Unity中的重载和重写

一、重载

重载:(两个必须一个可以)

  1. 参数名必须相同
  2. 参数列表必须不同
  3. 返回值类型可以不同

代码示例:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class OverLoad : MonoBehaviour

    void Update()
    
        if (Input.GetKeyDown(KeyCode.L))
        
            Eat(3.2f);
        

        if (Input.GetKeyDown(KeyCode.K))
        
            Eat(3);
        
    

    public void Eat(int i)
    
        Debug.Log("我是int类型的吃");
    

    public int Eat(float i)
    
        Debug.Log("我是Float类型的吃");
        return 0;
    

    public virtual void SayHello(string name)
    
        Debug.Log(name + "你好!");
    


结果:

二、重写

重写:(三个必须)

  1. 函数名必须相同
  2. 参数列表必须相同
  3. 返回值类型必须相同

代码示例:
父类

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class OverLoad : MonoBehaviour

    void Update()
    
        if (Input.GetKeyDown(KeyCode.J))
        
            SayHello("小朱");
        
    

    public virtual void SayHello(string name)
    
        Debug.Log(name + "你好,我是父类方法");
    



子类继承父类

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class OverWirte : OverLoad

    void Update()
    
        if (Input.GetKeyDown(KeyCode.U))
        
            SayHello("小朱");
        
    

    public override void SayHello(string name)
    
        Debug.Log(name+"你好,我是重写方法");
    


结果:

三、重载和重写的区别

  1. 多态、封装、继承的位置不同,重载在同一定义域中(如在同一类中),重写在子类中。
  2. 定义不同,重载两个必须一个可以,重写三个必须
  3. 调用方式不一样,重载相同对象可以调用不同参数,重写不同对象调用相同参数
  4. 多态时机不同,重载编译时多态,重写运行时多态。

以上是关于Unity中的重载和重写的主要内容,如果未能解决你的问题,请参考以下文章

深入理解Java中的重写和重载

iOS中的重载和重写

iOS中的重载和重写

java中的重载和重写

重写和重载的区别

重写和重载的三点区别