前两天,有同事问起这个问题,而且不是第一次,所以,决定做一个测试,以飨读者,也算是一次总结。
首先,建立两个 class ,两个 interface ,如下:
namespace InterfaceClass
{
public class ClassA
{
public string rtString ( )
{
return "ClassA";
}
}
}
namespace InterfaceClass
{
public class ClassB
{
public string rtString ( )
{
return "ClassB";
}
}
}
namespace InterfaceClass
{
public interface InterfaceA
{
string rtInterfaceAString ( );
}
}
namespace InterfaceClass
{
public interface InterfaceB
{
string rtInterfaceBString ( );
}
}
OK,测试开始:
1、建立一个测试类,使之 inherit ClassA:
namespace InterfaceClass
{
public class ClassTest : ClassA
{
}
}
通过控制台程序实例化此测试类,如下:
ClassTest classTest = new ClassTest ( );
Console.WriteLine ( classTest.rtString ( ) );
输出: ClassA
2、建立一个测试类,使之 inherit ClassB:
namespace InterfaceClass
{
public class ClassTest : ClassB
{
}
}
通过控制台程序实例化此测试类,如下:
ClassTest classTest = new ClassTest ( );
Console.WriteLine ( classTest.rtString ( ) );
输出: ClassB
3、建立一个测试类,使之 inherit ClassA ,ClassB:
namespace InterfaceClass
{
public class ClassTest : ClassB, ClassA
{
}
}
编译时输出异常:
类“InterfaceClass.ClassTest”不能具有多个基类:“InterfaceClass.ClassB”和“ClassA”
4、建立一个测试类,使之 inherit InterfaceA:
namespace InterfaceClass
{
public class ClassTest : InterfaceA
{
public string rtInterfaceAString ( )
{
return "InterfaceA";
}
}
}
通过控制台程序实例化此测试类,如下:
ClassTest classTest = new ClassTest ( );
Console.WriteLine ( classTest.rtInterfaceAString ( ) );
输出: InterfaceA
5、建立一个测试类,使之 inherit InterfaceB:
namespace InterfaceClass
{
public class ClassTest : InterfaceB
{
public string rtInterfaceBString ( )
{
return "InterfaceB";
}
}
}
通过控制台程序实例化此测试类,如下:
ClassTest classTest = new ClassTest ( );
Console.WriteLine ( classTest.rtInterfaceBString ( ) );
输出: InterfaceB
6、建立一个测试类,使之 inherit InterfaceA ,InterfaceB:
namespace InterfaceClass
{
public class ClassTest : InterfaceB, InterfaceA
{
public string rtInterfaceBString ( )
{
return "InterfaceB";
}
public string rtInterfaceAString ( )
{
return "InterfaceA";
}
}
}
通过控制台程序实例化此测试类,如下:
ClassTest classTest = new ClassTest ( );
Console.WriteLine ( classTest.rtInterfaceAString ( ) );
Console.WriteLine ( classTest.rtInterfaceBString ( ) );
输出: InterfaceA
InterfaceB
7、建立一个测试类,使之 inherit InterfaceA ,InterfaceB,ClassA:
namespace InterfaceClass
{
public class ClassTest : InterfaceB, InterfaceA, ClassA
{
public string rtInterfaceBString ( )
{
return "InterfaceB";
}
public string rtInterfaceAString ( )
{
return "InterfaceA";
}
}
}
编译时输出异常:
基类“ClassA”必须在任何接口之前
8、建立一个测试类,使之 inherit ClassA ,InterfaceA ,InterfaceB:
namespace InterfaceClass
{
public class ClassTest :ClassA, InterfaceB, InterfaceA
{
public string rtInterfaceBString ( )
{
return "InterfaceB";
}
public string rtInterfaceAString ( )
{
return "InterfaceA";
}
}
}
通过控制台程序实例化此测试类,如下:
ClassTest classTest = new ClassTest ( );
Console.WriteLine ( classTest.rtString ( ) );
Console.WriteLine ( classTest.rtInterfaceAString ( ) );
Console.WriteLine ( classTest.rtInterfaceBString ( ) );
输出: ClassA
InterfaceA
InterfaceB
总结:
1、类不可以同时 inherit 自两个及以上类
2、类可以同时 implement 多个接口
3、类在同时 inherit 类和 implement 接口时,要将需要 inherit 的类写到第一,要先 inherit 类,再 implement 接口
如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛