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("精准弹幕");
}
}
接口,继承,重写
最新推荐文章于 2022-12-07 10:10:14 发布