您的位置:首页 > 其它

关于 interface 和 class 之间 inherit 关系的测试

2009-08-26 11:19 316 查看
前两天,有同事问起这个问题,而且不是第一次,所以,决定做一个测试,以飨读者,也算是一次总结。

首先,建立两个 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 接口

以上,只是基本测试,不当之处,请指正。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: