菜鸟C#成长记——接口的实现

    接口(interface)是向客户保证类或者结构体行为方式的一种协定。当类要实现某个接口时,相当于告诉可能的客户:“我保证支持这个具名的接口的方法、属性、事件和索引器。”在类和客户之间创建协定方面,接口是抽象类之外的另一种方式。
    
当实现一个接口时,它就必须实现该接口的所用方法和属性,效果相当于表明:“我同意履行这个接口所给定的协定。”
   
接口主体描述实现类必须实现的方法、属性等等。下面例子是描述一个类可以从数据库中存取所需的方法和属性,这个接口是IStorabel。在这个就口中指定两个方法:Read()Write()。接口的功能是定义类中的功能。

 

using System;
using System.Collections.Generic;
using System.Text;

namespace 接口的实现
{
    
/// <summary>
    
/// 声明接口,默认是public
    
/// </summary>

    interface IStorable
    
{
        
void Read();    //  没有访问修饰符,方法是公共的   //   方法没有实现
        void Write(object obj);
        
int Status get;set;}         //   属性和方法没有实现
    }

    
/// <summary>
    
/// 创建实现IStorable接口的类
    
/// </summary>

    public class Document : IStorable
    
{
        
private int status = 0;     //  存取属性的值

        
/// <summary>
        
/// 实现属性
        
/// </summary>

        public int Status
        
{
            
get return status; }
            
set { status = value; }
        }

        
        
/// <summary>
        
/// 建立类的构造函数
        
/// </summary>
        
/// <param name="s"></param>

        public Document(string s)
        
{
            Console.WriteLine(
"利用{0}创建文件", s);
        }

        
/// <summary>
        
/// 实现Read方法
        
/// </summary>

        public void Read()
        
{
            Console.WriteLine(
"为IStorable接口实现Read()方法");
        }

        
/// <summary>
        
/// 实现Write方法
        
/// </summary>

        public void Write(object o)
        
{
            Console.WriteLine(
"为IStorable实现Write()方法");
        }

    }


    
/// <summary>
    
/// 测试接口
    
/// </summary>

    class Program
    
{
        
static void Main(string[] args)
        
{
            Document doc 
= new Document("测试文件");
            doc.Status 
= -1;
            doc.Read();
            Console.WriteLine(
"文件状态:{0}",doc .Status );
            Console.ReadLine();
        }

    }

}

 

运行结果:

 

    代码中的Document类的作者负责提供了IStorable方法的具体实现。因为我们已经指定Document要实现该接口,那么它就必须实现所有接口的方法,否则编译时就会出错。

    另外还要注意IStorabel的方法声明中并没有访问修饰符,如果有的话,就会产生编译错误。接口隐含的就是Public,因为接口是由其他类提供的协定。

    实现接口的类必须完整地履行协定,实现所有的属性和方法,但是要如何实现这些必要条件,就完全由Document决定了。

参考书籍:《Progarmming C#》

2008年10月12日
1:22:42

 

posted on 2008-10-12 00:52  冠华仔  阅读(558)  评论(0编辑  收藏  举报

导航