C# 虚方法

2021-06-20 10:03

阅读:402

标签:关键字   方法   col   方法重写   注意   stat   访问   pre   task   

使用new关键字来做调用

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        public class Aminal
        {
            public string Name;  // 定义宠物的名字
            public void PrintName()
            {
                Console.WriteLine("宠物的名字:" + Name);
            }
        }
        // Dog继承Aminal类
        public class Dog : Aminal
        {
            // 隐藏父类的PrintName
            new public void PrintName()
            {
                Console.WriteLine("名字为:" + Name);
            }
        }
        static void Main(string[] args)
        {
            // 使用new关键字隐藏,取决于通过什么类型的调用
            //Dog dog = new Dog();  // 打印的是使用Dog里面的PrintName的方法
            Aminal dog = new Dog();  // 调用的是Aminal里面的PrintName的方法
            dog.Name = "your name";
            dog.PrintName();
        }
    }
}

使用vitual虚方法和override重写

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        public class Aminal
        {
            public string Name;  // 定义宠物的名字
            // 定义虚方法
            virtual public void PrintName()
            {
                Console.WriteLine("宠物的名字:" + Name);
            }
        }
        // Dog继承Aminal类
        public class Dog : Aminal
        {
            // 重写
            public override void PrintName()
            {
                // base.PrintName(); // 这个是调用父类的虚方法
                Console.WriteLine("这是重写方法,{0}", this.Name);
            }
        }
        static void Main(string[] args)
        {
            Aminal dog = new Dog();  // 输出的是重写方法的内容
            dog.Name = "your name";
            dog.PrintName();
        }
    }
}

 虚方法需要注意的地方:

1.重写虚方法必须要使用相同的可访问属性,如:private就不可以

2.不能重写static和非虚方法

3.方法、属性、索引器、事件都可以使用虚方法重写

C# 虚方法

标签:关键字   方法   col   方法重写   注意   stat   访问   pre   task   

原文地址:https://www.cnblogs.com/namejr/p/10263818.html


评论


亲,登录后才可以留言!