A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 派大星 中级黑马   /  2012-2-14 16:18  /  1586 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

听说过接口. 不知道是怎么回事. 和继承的有什么关系呢?

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

3 个回复

倒序浏览
接口本身不提供类或结构能够以继承基类功能的方式继承的任何功能。但是,如果基类实现接口,派生类将继承该实现。
测试代码:
interface I
{
void Fun();
}
class A : I
{
public void Fun()
{
}
}
class B:A
{
}
以下测试返回值为true:
B b = new B();
bool bTest = b is I;

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

回复 使用道具 举报
//打印接口IPrint
public interface IPrint
{
    void  Print();
    void  PrintPreview();
}
//调用接口的主程序
static void Main()
{
    Console.WriteLine("Please select printer: ");
    string printerName=Console.ReadLine();
    IPrint printer=null;
    if(printerNmae=="HP")
    {
         printer=new HPPrinter();
    }
    else if(printerName=="IBM")
    {
         printer=new IBMPrinter();
     }
     else  if(printerName=="Epsom")
     {
          printer=new EpsomPrinter();
     }
     printer.PrintPreview();
     printer.Print();
}
//HPPrint类
public class HPPrint:IPrint
{
  public void PrintPreview()
  {
      Console.WriteLine("this is HP Printer");
  }
  public void Print()
  {
     Console.WriteLine("this is HP Printer");
  }
  
}

//IBMPrint类
public class IBMPrint:IPrint
{
  public void PrintPreview()
  {
      Console.WriteLine("this is IBM Printer");
  }
  public void Print()
  {
     Console.WriteLine("this is IBM Printer");
  }
  
}
//EpsomPrint类
public class EpsomPrint:IPrint
{
  public void PrintPreview()
  {
      Console.WriteLine("this is Epsom Printer");
  }
  public void Print()
  {
     Console.WriteLine("this is Epson Printer");
  }
  
}

这就是接口的作用,希望对你有帮助。

评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
接口可由方法、属性、事件、索引器或这四种成员类型的任意组合构成。接口不能包含常量、字段、运算符、实例构造函数、析构函数或类型。它不能包含静态成员。接口成员是自动公开的,且不能包含任何访问修饰符。

类或结构实现接口时,该类或结构将为该接口定义的所有成员提供实现。接口本身不提供类或结构能够以继承基类功能的方式继承的任何功能。但是,如果基类实现接口,派生类将继承该实现。派生的类被认为是隐式地实现接口。

类和结构按照类继承基类或结构的类似方式实现接口,但有两个例外:

类或结构可实现多个接口。


类或结构实现接口时,仅接收方法名称和签名,因为接口本身不包含实现,如下面的示例所示。




C#



复制



public class Car : IEquatable<Car>
{
    public string Make {get; set;}
    public string Model { get; set; }
    public string Year { get; set; }

    // Implementation of IEquatable<T> interface
    public bool Equals(Car car)
    {
        if (this.Make == car.Make &&
            this.Model == car.Model &&
            this.Year == car.Year)
        {
            return true;
        }
        else
            return false;
    }
}



评分

参与人数 1技术分 +2 收起 理由
宋天琪 + 2

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马