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 + "你好!");
    }

}

结果:
Unity中的重载和重写_第1张图片

二、重写

重写:(三个必须)

  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+"你好,我是重写方法");
    }

}

结果:
Unity中的重载和重写_第2张图片

三、重载和重写的区别

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

你可能感兴趣的:(Unity,/,C#,学习笔记,C#)