关于 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 接口
以上,只是基本测试,不当之处,请指正。
首先,建立两个 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 接口
以上,只是基本测试,不当之处,请指正。
相关文章推荐
- IT结合测试时,准备数据的注意事项(之二:表之间的关系)。
- java中看class,interface之间的extends,implements的关系,,用F4,open type hierarchy
- class,abstract class,interface之间的继承与实现关系(java,c#)
- C#关于类抽象类和接口之间的关系(Abstract)(Interface)
- Android framework回顾(3)binder利用及IBinder BpRefbase IInterface INTERFACE 之间关系
- 关于运行期异常:Failed to instantiate [java.util.List]: Specified class is an interface
- 关于doitphp,thinkphp,yii,ci,doophp等框架的性能对比测试
- 类(class),抽象类(abstract), 接口(interface)的关系和区别
- 关于gcc、glibc和binutils模块之间的关系
- 关于继承之间的关系
- 关于visual studio和vc版本之间的对应关系
- 关于CGI:Tomcat、PHP、Perl、Python和FastCGI之间的关系
- 关于 v$waitstat 和 x$bh.class 的关系
- [MFC学习之C++基础] 孙鑫视频中第三讲中提到的小测试程序(关于基类和子类的继承关系)
- 关于Certificate、Provisioning Profile、App ID的介绍及其之间的关系
- 关于与运算和取余之间的关系
- Interface plays as Placeholder, without any class implement it
- 关于CCSprite、CCtexture2D与CCImage之间的关系
- 关于 v$waitstat 和 x$bh.class 的关系
- 关于代码速度优化,MDK中 static 与优化级别与典型for循环之间的关系