using System;
using System.Collections.Generic;
using 
System.Linq;
using System.Text;
namespace 
ConsoleApplication1
{
    class 
Program
    {
        
static void Main(string[] args)
        
{
            Audi 
audi = new 
Audi("linQ",60);
            
audi[1] = 
"A6";
            
audi[2] = 
"A8";
            
Console.WriteLine(audi[1]);
            
audi.Run();
            
audi.ShowResult();
            
Console.ReadLine();
        
}
    }
    public class 
Action
    {
        
public static void ToRun(Vehicle 
vehicle)
        
{
            
Console.WriteLine("{0} is running.", 
vehicle.ToString());
        
}
    }
    public class 
Vehicle
    {
        
private string name;
        private int 
speed;
        private string[] array = 
new string[10];
        public 
Vehicle()
        
{
        
}
        
//限定被相似的名称隐藏的成员
        public 
Vehicle(string name, int speed)
        
{
            
this.name = 
name;
            
this.speed = speed;
        
}
        public virtual void 
ShowResult()
        
{
            
Console.WriteLine("The top speed of {0} is {1}.", name, 
speed);
        
}
        public void 
Run()
        
{
            
//传递当前实例参数
            
Action.ToRun(this);
        
}
        
//声明索引器,必须为this,这样就可以像数组一样来索引对象
        
public string this[int param]
        
{
            get { 
return array[param]; 
}
            set { 
array[param] = value; }
        
}
    }
    public class Car : 
Vehicle
    {
        
//派生类和基类通信,以base实现,基类首先被调用
        public 
Car()
            : 
base("Car", 200)
        { 
}
        
//指定创建派生类实例时应调用的基类构造函数
        public 
Car(string name, int 
speed)
            : 
this()
        { 
}
        public override void 
ShowResult()
        
{
            
//调用基类上已被其他方法重写的方法
            
base.ShowResult();
            
Console.WriteLine("It‘s a car‘s 
result.");
        }
    
}
    public class Audi : Car
    
{
        public 
Audi()
            : 
base("Audi", 300)
        { 
}
        public Audi(string name, int 
speed)
            : 
this()
        
{
        
}
        public override void 
ShowResult()
        
{
            
//由三层继承可以看出,base只能继承其直接基类成员
            
base.ShowResult();
            
base.Run();
            
Console.WriteLine("It‘s audi‘s 
result.");
        
}
    }
}
原文地址:http://www.cnblogs.com/woshilulin/p/3720365.html