接口,继承,重写

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

public class InterfaceTest : MonoBehaviour {

	// Use this for initialization
	void Start () {
        //Amumu player = new Amumu();
        //player.SkillQ();
        //Ezreal real = new Ezreal();
        //real.SkillQ();
        //多态中的转型      向上转型  子类---->父类的转型
        IHero hero = new GaiLun();
        hero.SkillQ();
        
	}
	
	// Update is called once per frame
	void Update () {
		
	}
}

interface IHero
{
    //1.限定你有五个技能
    void SkillQ();
    void SkillW();

    void SkillE();
    void SkillR();

}
public class Amumu
{
    public void SkillQ()
    {
        Debug.Log("Q技能被按下");
        Debug.Log("Q技能:绷带牵引");        
    }
    public void SkillW()
    {
        Debug.Log("W技能被按下");
        Debug.Log("W技能:绝望光环");
    }
    public void SkillE()
    {
        Debug.Log("E技能被按下");
        Debug.Log("E技能:阿木木的愤怒");
    }
    public void SkillR()
    {
        Debug.Log("R技能被按下");
        Debug.Log("R技能:木乃伊之咒");
    }
}
public class GaiLun:BaseHero
{
    1.没有限定  每个英雄只有五个技能  且只能是那几个技能
    2.没有提取重复的逻辑代码
    //public void SkillE()
    //{
    //    Debug.Log("E技能被按下");
    //    Debug.Log("E技能:阿木木的愤怒");
    //}
    //public void SkillR()
    //{
    //    Debug.Log("R技能被按下");
    //    Debug.Log("R技能:木乃伊之咒");
    //}
    public override void SkillQ()
    {
        base.SkillQ();
        Debug.Log("致命打击");
    }
}

/// <summary>
/// 提取出来基类   实现接口中的方法  把重复性的代码提取 放在基类中
/// </summary>
public class BaseHero : IHero
{
    public virtual void SkillE()
    {
        Debug.Log("E技能被按下");
    }

    public virtual void SkillQ()
    {
        Debug.Log("Q技能被按下");
    }

    public virtual void SkillR()
    {
        Debug.Log("R技能被按下");
    }

    public virtual void SkillW()
    {
        Debug.Log("W技能被按下");
    }
}

public class Ezreal : BaseHero
{
    //具体英雄类
    public override void SkillQ()
    {
        //执行父类中的方法(共有的逻辑代码块)
        base.SkillQ();
        //执行子类中特有的方法
        Debug.Log("秘术射击");
    }
    public override void SkillW()
    {
        base.SkillW();
        Debug.Log("精华跃动");        
    }
    public override void SkillE()
    {
        base.SkillE();
        Debug.Log("奥术跃迁");
    }
    public override void SkillR()
    {
        base.SkillR();
        Debug.Log("精准弹幕");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值