一、重载
重载:(两个必须一个可以)
- 参数名必须相同
- 参数列表必须不同
- 返回值类型可以不同
代码示例:
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 + "你好!");
}
}
结果:
二、重写
重写:(三个必须)
- 函数名必须相同
- 参数列表必须相同
- 返回值类型必须相同
代码示例:
父类
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 + "你好,我是父类方法");
}
}
子类继承父类文章来源:https://www.toymoban.com/news/detail-510208.html
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+"你好,我是重写方法");
}
}
结果:
文章来源地址https://www.toymoban.com/news/detail-510208.html
三、重载和重写的区别
- 多态、封装、继承的位置不同,重载在同一定义域中(如在同一类中),重写在子类中。
- 定义不同,重载两个必须一个可以,重写三个必须
- 调用方式不一样,重载相同对象可以调用不同参数,重写不同对象调用相同参数
- 多态时机不同,重载编译时多态,重写运行时多态。
到了这里,关于Unity中的重载和重写的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!