面向对象的三个属性是:继承,重载,多态
在C#是如何体现的呢?
virtual 这是由c++继承过来的,但是实现的时候必须用override。
abstract 也是由c++继承来的,在c#和c++差不多。
总的来说和 c++相比,就是多了个override。
用virtual修饰的函数必须是实现的,也就是说在类的继承中会有不同的表现。
abstract 修饰的函数不需要实现,必须在继承类中实现。
abstract定义的函数在类的继承中,除了第一次定义时候不需要实现意外,其他的都和virtual 一样。
对abstract还有一个要求,就是用abstract修饰的函数,类必须也用abstract修饰。
using System;
namespace HelloWorldApplication
{
class A{
public virtual void fun(){
Console.WriteLine("A fun");
}
}
class B:A{
public override void fun(){
Console.WriteLine("B fun");
}
}
class C:B{
public override void fun(){
Console.WriteLine("C fun");
}
}
abstract class VA{
public abstract void fun();
}
class VB:VA{
public override void fun(){
Console.WriteLine("VB fun");
}
}
class VC:VB{
public override void fun(){
Console.WriteLine("VC fun");
}
}
class HelloWorld
{
static void Main(string[] args)
{
A a = new B();
a.fun();
VA va = new VC();
va.fun();
Console.WriteLine("Hello World ttt");
Console.ReadKey();
}
}
}