虚方法

题目描述  

创建一个虚方法和一个非虚方法,然后分别通过另一个类继承,并比较它们的调用结果。(控制台应用程序)

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

namespace 虚方法
{
    class class1
    {
//默认的方法被指定为私有的,只能在当前类中进行访问,默认private
//需要在其他类中访问,就需要将其指定为public:访问权限最高,只要在项目内部都可以进行访问
//virtual关键字必须位于void前
        public virtual void virtualMethod()//虚方法能够在派生类中重写
        {
            Console.WriteLine("这是一个虚方法");
        }
        public void nonVirtualMethod()
        {
            Console.WriteLine("这是一个非虚方法");
        }
    }
    class class2 : class1//将class2继承与class1
    {
        public override void virtualMethod()
        {
            Console.WriteLine("这是一个新写的虚方法");
        }
        public new void nonVirtualMethod()
        {
            Console.WriteLine("这是一个新的方法");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            class1 c1 = new class1();//将类进行实例化
            c1.virtualMethod();
            c1.nonVirtualMethod();
            class2 c2 = new class2();
            c2.virtualMethod();
            c2.nonVirtualMethod();
            c1 = c2;
            c1.virtualMethod();
            c1.nonVirtualMethod();
            Console.ReadKey();
        }
    }
}

***非虚方法的实现是一成不变的:无论该方法在声明它的类的实例上调用还是在派生类的实例上调用,实现均相同。与此相反,虚方法的实现的过程称为重写(overrride)该方法。

猜你喜欢

转载自blog.csdn.net/wyj____/article/details/80164946
今日推荐