简单理解虚方法与抽象方法

虚方法与抽象方法说明:

    在C#中虚函数的概念与标准的OOP的概念相同:可以在派生类中重写虚函数。在方法调用时会调用该对象的合适方法。在C#中,函数在默认情况下不是虚拟的,但是可以显示的声明为virtual(构造函数除外)。这点与C++一样,从性能的角度考虑,除非显式指定,否则函数就不是虚拟的。但是在Java中,所有函数都是虚拟的。C++与C#在派生类重写的时候又有所不同,C#要使用override关键字显式声明。

    在C#中抽象类是不能直接实例化的,抽象方法也不能直接实现,必须在非抽象的派生类中重写。这点与虚函数又存在差别,虚函数是可以实现的。

虚方法使用:

    1.我们先定义一个车辆的基类BaseCar

 public class BaseCar
    {
        public virtual string getCarName()
        {
            return "这是一辆大货车";
        }

        public virtual string getCarBrand()
        {
            return "丰田重汽";
        }
    }

    基类里面我写了两个虚函数,来得到这个车辆的是什么类型的车,以及这个车辆的品牌。

    2.写一个派生类来集成这个基类

  public class Car:BaseCar
    {
        
    }

    这里可以不做任何实现,调用的时候直接调用这个派生类就可以得到这个车辆的类型与车辆品牌。

    3.这时我们可以打印出来结果

static void Main(string[] args)
        {
            Car car = new Car();
            Console.WriteLine(car.getCarName());
            Console.WriteLine(car.getCarBrand());
            Console.ReadLine();
        }

如果有一天丰田被众泰收购了,我们想将这个汽车品牌换个名字怎么处理呢。下面就是实现一个派生类来继承这个基类。

 public class Car:BaseCar
    {
        //如果丰田被众泰收购,这里我们可以修改汽车品牌
        //车辆名称还是大货车,这个是不变的
        public override string getCarBrand()
        {
            //由于丰田被重汽收购,所以这里我们将品牌改为
            return "众泰重汽";
        }
    }

这时我们可以打印出来结果:

抽象方法使用以及与接口的实现可以参考我的另一篇博文:

https://blog.csdn.net/qq_17486399/article/details/79239294

小弟对基础知识的回顾,献丑了!

    

猜你喜欢

转载自blog.csdn.net/qq_17486399/article/details/80254959