接口 interface

作者在 2008-05-02 16:47:37 发布以下内容
using System;
interface IDrivingLicenceB
{
 void GetLicence();
}
interface IDrivingLicenceA : IDrivingLicenceB
{
 new void GetLicence();
}
class teacher : IDrivingLicenceA
{
 public void GetLicence()
 {
  Console.WriteLine("教师获得A驾驶执照");
 }
}
class student : IDrivingLicenceB
{
 public void GetLicence()
 {
  Console.WriteLine("学生获得B驾驶执照");
 }
}
class test
{
 
 static void dirveCar(string name,object o)
 {
  IDrivingLicenceB g=o as IDrivingLicenceB;
  if(g!=null) //实现接口的情况
  {
   Console.WriteLine(name+"有A或B驾驶执照,车子开动了。");
  }
  else  //没有实现接口的情况
  {
   Console.WriteLine(name+"无A或B驾驶执照,不能开车。");
  }
 }
 static void dirveBus(string name,object o)
 {
  IDrivingLicenceA s=o as IDrivingLicenceA;
  if(s!=null)
  {
   Console.WriteLine(name+"有A驾驶执照,车子开动了。");
  }
  else
  {
   Console.WriteLine(name+"无A驾驶执照,不能开车。");
  }
 }
 static void Main()
 {
  
  teacher t=new teacher();
  dirveCar("教师",t);
  dirveBus("教师",t);
  student s=new student();
  dirveCar("学生",s);
  dirveBus("学生",s);
 }
}
输出:
教师有A或B驾驶执照,车子开动
教师有A驾驶执照,车子开动了。
学生有A或B驾驶执照,车子开动
学生无A驾驶执照,不能开车。
C#基础 | 阅读 1953 次
文章评论,共1条
fanneysky(作者)
2008-05-02 20:57
1
using System;
interface IDrivingLicenceB
{
        void GetLicence();
}
interface IDrivingLicenceA : IDrivingLicenceB
{
        new void GetLicence();
}
class teacher : IDrivingLicenceA
{
 //显式接口不能通过类的实例来访问,不需加public
//对于类来说是私有的,对于接口来说是公有的
//显式接口成员实现可以消除多义性。
//只能通过接口实例来访问 如: ((IDrivingLicenceA)t).GetLicence();
//显式接口成员含访问修饰符属编译错误,如包含abstract,virtual,override,static也属编错误。
        void IDrivingLicenceB.GetLicence()
        {
                Console.WriteLine("教师获得B驾驶证");
        }
        void IDrivingLicenceA.GetLicence () //实现接口的方法,不需加public
        {
                Console.WriteLine("教师获得A驾驶证");
        }
        public void GetLicence()
        {
                Console.WriteLine("这个不是接口");
        }
        
        
}
class student : IDrivingLicenceB
{
        public void GetLicence()
        {
                Console.WriteLine("学生获得B驾驶执照");
        }
}
class test
{
        
        static void dirveCar(string name,object o)
        {
                IDrivingLicenceB g=o as IDrivingLicenceB;
                if(g!=null)
                {
                        Console.WriteLine(name+"有A或B驾驶执照,车子开动了。");
                }
                else
                {
                        Console.WriteLine(name+"无A或B驾驶执照,不能开车。");
                }
        }
        static void dirveBus(string name,object o)
        {
                IDrivingLicenceA s=o as IDrivingLicenceA;
                if(s!=null)
                {
                        Console.WriteLine(name+"有A驾驶执照,车子开动了。");
                }
                else
                {
                        Console.WriteLine(name+"无A驾驶执照,不能开车。");
                }
        }
        static void Main()
        {
                
                teacher t=new teacher();
                ((IDrivingLicenceB)t).GetLicence();//强制转换.通过接口访问。
                ((IDrivingLicenceA)t).GetLicence();
                t.GetLicence();

        }
}
输出:
教师获得B驾驶证
教师获得A驾驶证
这个不是接口
游客请输入验证码
浏览19883次