经常在代码中看到将实例化的类赋予一个接口变量的代码--------接口引用。
因为类实现了该接口,所以可以将接口变量指向该类的实例地址。
接口引用可以完全看作是类引用,但是接口引用的强大之处在于:可以指向任何实现该接口的实例,不论是什么类型的实例,只要实现了这个接口,就可以用这个接口变量指向这个实例的地址。进而调用这个实例的方法(局限于此实例实现的该接口中规定的方法)。如果要调用实例中的成员但是又不属于接口规定的成员,就需要把这个接口变量强制转换为合适的类型,转换之后就是正常的类引用了。
class
Program
{
static void Main( string [] args)
{
i smalla = new a();
smalla.printa();
Console.WriteLine(smalla.C);
smalla.printb();
((a)smalla).print
i bigA = new A();
}
}
interface i
{
void printa();
void printb();
decimal C
{
get ;
}
}
class a : i
{
public void printa()
{
Console.WriteLine( " aaa " );
}
public void printb()
{
Console.WriteLine( " bbb " );
}
private decimal c;
public decimal C
{
get { return c; }
}
public void printc()
{
Console.WriteLine( " ccc " );
}
}
class A : i
{
public void printa()
{
Console.WriteLine( " AAA " );
}
public void printb()
{
Console.WriteLine( " BBB " );
}
private decimal c;
public decimal C
{
get { return c; }
}
}
{
static void Main( string [] args)
{
i smalla = new a();
smalla.printa();
Console.WriteLine(smalla.C);
smalla.printb();
((a)smalla).print
i bigA = new A();
}
}
interface i
{
void printa();
void printb();
decimal C
{
get ;
}
}
class a : i
{
public void printa()
{
Console.WriteLine( " aaa " );
}
public void printb()
{
Console.WriteLine( " bbb " );
}
private decimal c;
public decimal C
{
get { return c; }
}
public void printc()
{
Console.WriteLine( " ccc " );
}
}
class A : i
{
public void printa()
{
Console.WriteLine( " AAA " );
}
public void printb()
{
Console.WriteLine( " BBB " );
}
private decimal c;
public decimal C
{
get { return c; }
}
}