Unity - A计划(永久有效期) 扫二维码继续学习 二维码时效为半小时

(207评价)
优惠后 ¥1899.00优惠前 ¥2499.00 双十一全年最大力度限时优惠
1对1 答疑即时回复7天无理由退款30天价保提问必答

服务保障

1对1 答疑

提供专属的一对一在线答疑,快速答疑解惑。

即时回复

及时响应学习咨询,帮助解决问题。

7天无理由退款

购买后7天内可申请无理由退款。

30天价保

购买后30天内如遇降价,可申请价保。

提问必答

对于提问做到有问必答,帮您扫清学习过程中的种种障碍

虚方法的问题
shuaibi发起了话题2017-08-12
2
回复
628
浏览

class Boss : Enemy
    {
        public override void Move()
        {
            Console.WriteLine("这里是Boss的共有Move方法");
        }

        public void Attack()
        {
            Console.WriteLine("Boss正在进行攻击");
            Move();
        }
    }

 

如果单纯用override函数写一遍的话是不会输出是吗?如果调用的呢?

为什么要在这个Attack的方法里面重写一遍?不是很理解,请解答,谢谢。

所有回复
  • sdhexu • 2017-08-12

    虚方法来自类的思想。

    假设有一个动物类,每种动物有不同的叫声,你有一个笼子类来管理各种不同的动物,你不知道笼子里动物都是什么动物。你只能枚举笼子里的动物,然后调用动物类里面的“叫声”方法。这时候,如果这个动物是狗,那么他应该会叫“旺旺”,如果是猫,他应该会叫“喵喵”,使用虚方法,你可以不必关系动物具体是什么动物,只要知道它是个动物就好了。

    class 动物

    {

          public vritual void 叫声()   { }

    }

    class 狗 : 动物

    {

        public override void 叫声 () { print("旺旺"); }

    }

    class 猫 : 动物

    {

        public override void 叫声() { print(“喵喵”); }

    }

     

    class 笼子

    {

        protected List<动物>   m_aniLists;

        public void 把一个动物放进笼子( 动物   a )

        {

                m_aniLists.Add( a );

        }

        public void 让动物们叫()

        {

                  foreach( 动物 a in m_aniLists )

                 {

                         a.叫声();

                 }

        }

    }

     

    class Program {

         static void main(){

                  笼子   lz = new 笼子();  // 创建一个笼子

                  lz.把动物关进笼子(    new 狗());      // 把一只狗关进笼子

                  lz.把动物关进笼子( new 猫());   // 把一只猫关进笼子

                  lz.让动物们叫();   // 让动物们自己叫

        }

    }

    还有-5条回复,点击查看
    你还没有登录,请先登录或注册!
  • siki • 2017-08-13

    你这里Move是重写的父类里面的,这个只有不同的子类都有不同的Move方法的情况下,才需要重写,如果大家的移动方法是一样的,那就不需要重写了,所以这个需不需要重写是根据需求来的

    还有-5条回复,点击查看
    你还没有登录,请先登录或注册!
发表回复
你还没有登录,请先 登录或 注册!