日期:2014-05-18 浏览次数:21127 次
interface IToken
{
...
}
class DefaultTokenImp1
{
...
}
class IdentifierToken : DefaultTokenImp1 , IToken
{
...
}
IdentifierToken it = new IdentifierToken(); IToken iTok = it; //合法
void Process(IToken iTok)
{
...
}
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
    interface ITok  //接口
    {
         int Get();//提供方法
    }
    class DefaultTokenImp1
    {
        public int c;
        public int d;
    }
    class IdentifierToken : DefaultTokenImp1, ITok
    {
        public int Get()//实现接口方法
        {
            int j;
            j = 10;
            return j;
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            IdentifierToken it = new IdentifierToken();
           // IdentifierToken its = new DefaultTokenImp1();出错,子类无法转换为基类型。
            DefaultTokenImp1 itt = it;//基类引用子列,没出错,只当it是对象,且通过对子类实例的变量赋值而达到使itt基类实例中变量的值发生改变。
              it.c = 10;
            it.d = 20;        
            ITok itok = it;//合法,接口只提供方法,不提供实现,itok接口搜寻并调用it中的方法,来实现itok.GET()这个方法;
              Console.WriteLine(itok.Get());//输出
            Console.WriteLine(itt.c);//父类变量
            Console.WriteLine(itt.d);
            Console.ReadLine();
        }
    }
}