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)
    }
}

你可能感兴趣的:(.net)