Unity-虚方法&密封方法&抽象方法&接口

1 定义一个接口,定义一个int类型的属性和无参数的方法,在类里继承这个接口后,实现接口的属性和方法,把属性赋值给类里定义的一个字段。
2 定义一个虚方法,在继承虚方法的内容后,新增扩展功能。
3 定义一个抽象方法,在继承抽象方法的方法里重写。
4 定义一个密封方法,继承的类里,不能重写此方法。

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

//1 定义一个接口,定义一个int类型的属性和无参数的方法,在类里继承这个接口后,实现接口的属性和方法,把属性赋值给类里定义的一个字段。
//2 定义一个虚方法,在继承虚方法的内容后,新增扩展功能。
//3 定义一个抽象方法,在继承抽象方法的方法里重写。
//4 定义一个密封方法,继承的类里,不能重写此方法。

public interface UTInterface
{
    //如下代码会报错,接口不允许定义字段,可以定义属性。
    //public int _intData;

    int intData
    {
        get;
        set;
    }
    void UTIMethod();
}

public class SubDemo : Demo, UTInterface
{
    public int _demoData;
    private void Start()
    {
        UTVirtualMethod();
        UTAbstractMethod();
        Debug.Log($"intData = {intData}");
        intData = 20;
        Debug.Log($"_demoData = {_demoData}");
    }

    public override void UTVirtualMethod()
    {
        base.UTVirtualMethod();
        Debug.Log("重写虚方法,SubDemo UTVirtualMethod");
    }

    public override void UTAbstractMethod()
    {
        Debug.Log("重写抽象方法,SubDemo UTAbstractMethod");
    }

    //密封方法使用需要继承一个父类的虚方法后使用,然后他的子类不能重写它。
    public sealed override void UTSealedMethod()
    {

    }

    //继承接口后,必须实现接口里的属性和方法
    public int intData
    {
        get
        {
            return 10;
        }
        //调用intData = 20;,会运行set里的代码
        set
        {
            _demoData = value;
        }
    }
}

public abstract class Demo : MonoBehaviour
{

    //虚方法 - 父类可以实现部分具体功能,子类可以覆盖此方法完全重写功能或继承父类实现的部分功能后再扩展功能
    public virtual void UTVirtualMethod()
    {
        Debug.Log("Demo类 UTVirtualMethod");
    }

    //抽象方法 - 抽象方法必须在抽象类里,抽象方法父类不能写具体代码,需要在子类覆盖时写具体功能
    public abstract void UTAbstractMethod();

    public virtual void UTSealedMethod() { }

    public void UTIMethod()
    {
        Debug.Log("实现接口的方法");
    }
}


public class SubSubDemo : SubDemo
{
    private void Start()
    {
        UTAbstractMethod();
    }

    如下代码会报错,UTSealedMethod是密封的,不能重写
    //public override void UTSealedMethod()
    //{
    //    Debug.Log("重写密封方法,报错");
    //}

    public override void UTAbstractMethod()
    {
        Debug.Log("重写抽象方法,SubSubDemo UTAbstractMethod");
    }
}




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值