zoukankan      html  css  js  c++  java
  • C# 虚方法

    问题:在父类中单独的一个方法,调用父类的一个虚方法(该方法是被子类重写的),那么执行的这个虚方法是掉父类的方法呢还是子类的方法呢?

    class Father
        {
            public string name = "我是父亲";
    
            public virtual string GetName()
            {
                return this.name;
            }
    
            public void SetFather()
            {
                var _name = this.GetName();//如果实例对象是子类的话,这里调的是子类的重写方法;如果实例对象是父类的话,调的当然是父类的方法
                Console.WriteLine("通过GetName方法获取的值:" + _name);
                Console.WriteLine("Father的name是:" + name);
            }
        }
    
      class Son : Father
        {
            public string son_name = "我是儿子";
            public override string GetName()
            {
                this.son_name = "儿子变成猪";
                this.name = "父亲的名字改变了哦";
                return this.son_name;
            }
        }

    调用:

     /*
                 * 这里主要是测试 在父类中单独的一个方法,调用父类的一个虚方法(该方法是被子类重写的),那么执行的这个虚方法是掉
                 * 父类的还是子类的呢?
                 * 实验证明:调的是子类的被重写的方法。
                 */
                Console.WriteLine("实例化son对象");
                Father f = new Son();
                f.SetFather();
    
                Console.WriteLine("========================我是华丽的分割线========================");
    
                Console.WriteLine("实例化father对象");
                Father f2 = new Father();
                f2.SetFather();
    
                Console.Read();

    答案是:如果实例对象是子类的话,这里调的是子类的重写方法;如果实例对象是父类的话,调的当然是父类的方法

  • 相关阅读:
    poj 1837 Balance
    poj 3009 Curling 2.0
    vagrant up 无法加载映像目录
    liunx 查看php 安装的扩展
    树莓派 添加超级管理员身份
    Sublime text追踪函数插件:ctags[转载]
    手动安装m4, autoconf, automake, libtool
    nginx: [error] invalid PID number "" in "/usr/local/nginx/logs/nginx.pid"
    如何将编码转为自己想要的编码 -- gbk utf-8
    laravel 增删修改
  • 原文地址:https://www.cnblogs.com/schangxiang/p/11280856.html
Copyright © 2011-2022 走看看