C#.NET中的接口1

/*
 * Created by SharpDevelop.
 * User: noo
 * Date: 2009-8-16
 * Time: 14:06
 * 
 * 接口1
 
*/

using System ;
interface IAdd
{
    
string strThing//接口里面的属性和方法默认都是public的(如果不是public的不可能被其他类调用,失去其作用),故不用写关键字
    {                //写了任何关键字,都会提示错误。并且不能包含字段成员,不能使用关键字static、virtual、abstract或sealed
        get;
        
set;
    }
    
    
int Add(int x,int y);//方法和属性里面都不含任何代码,代码写在实现接口的类中(继承接口的类)
}
interface IMinus
{
    
string strName
    {
        
get;
    }
    
int Minus(int x,int y);
}
class interfaceA:IAdd,IMinus//接口的具体实现代码
{
    
private string str1;
    
public string strThing
    {
        
get{return str1;}
        
set
        {
            str1
=value;
        }
    }
    
private string str2;
    
public string strName
    {
        
get{return str2;}
        
set
        {
            str2
=value;
        }
    }
    
public int Add(int x,int y)
    {
        
return x+y;
    }
    
public virtual int Minus(int x,int y)//可以用virtual或abstract来执行接口成员,但不能使用static或const
    {
        
return x-y;
    }
}
class interfaceB:interfaceA
{
    
public override int Minus(int x, int y)//重写方法
    {
        
return 10*x-y;
    }
}
class Test
{
    
static void Main()
    {
        IAdd pAdd
=new interfaceA ();
        
int intAdd=pAdd.Add (4,5);//接口其实就是对类中的功能进行分类,这里的pAdd不能调用接口IMinus中的Minus方法
        Console.WriteLine (intAdd);//9(4+5)
        
        IMinus pMinus1
=new interfaceA ();
        
int intMinus1=pMinus1.Minus (4,5);//调用A中的实现接口的虚方法
        Console.WriteLine (intMinus1);//-1(4-5)
        
        IMinus pMinus2
=new interfaceB ();
        
int intMinus2=pMinus2.Minus (4,5);//调用B中的重写方法
        Console.WriteLine (intMinus2);//(10*4-5)
    }
}
posted @ 2009-08-16 18:52  爱生活,爱GIS  阅读(251)  评论(0编辑  收藏  举报