接口IBaseA 、 IBaseB 和 IMyClass:
interface IBaseA
{
void PrintBaseA();
}
interface IBaseB
{
void PrintBaseB();
}
interface IMyClass
{
void PrintMyClass();
}
实现IBaseA 、 IBaseB 和 IMyClass接口,继承类:
class BaseA : IBaseA
{
public void PrintBaseA()
{
Console.WriteLine("This is PrintBaseA!");
}
}
class BaseB : BaseA, IBaseB
{
public void PrintBaseB()
{
Console.WriteLine("This is PrintBaseB!");
}
}
class MyClass : BaseB, IMyClass
{
public void PrintMyClass()
{
Console.WriteLine("This is PrintMyClass!");
}
}
Main
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace InterfaceIsAs
{
//========================================================================
// クラス名 : Program
/// <summary>
/// Program
/// </summary>
/// <remarks>
/// 查看带几个继承的类,使用强制转化的方式,
/// 以及使用as转换, 并且练习is的类型判断
/// </remarks>
//========================================================================
class InterfaceIsAs
{
//========================================================================
// メソッド名 : Main
/// <summary>
/// Main
/// </summary>
/// <remarks>
/// 强制转化,查看其继承方式
/// </remarks>
//========================================================================
static void Main(string[] args)
{
BaseA a1 = new BaseA();
a1.PrintBaseA();
BaseA a2 = new BaseB();
a2.PrintBaseA();
BaseA a3 = new MyClass();
a3.PrintBaseA();
BaseB b1 = new BaseB();
b1.PrintBaseA();
b1.PrintBaseB();
BaseB b2 = new MyClass();
b2.PrintBaseA();
b2.PrintBaseB();
MyClass mc1 = new MyClass();
mc1.PrintBaseA();
mc1.PrintBaseB();
mc1.PrintMyClass();
//TestBaseA
TestBaseA(a1);
TestBaseA(a2);
TestBaseA(a3);
Console.WriteLine();
//TestBaseB
TestBaseB(b1);
TestBaseB(b2);
Console.WriteLine();
//TestMyClass
TestMyClass(mc1);
Console.WriteLine();
Console.ReadKey();
}
//========================================================================
// メソッド名 : TestBaseA
/// <summary>
/// TestBaseA
/// </summary>
/// <param name="a">辅助变量</param>
//========================================================================
private static void TestBaseA(BaseA a)
{
/*
* is: 检查对象是否与给定类型兼容,返回类型为bool(True or False)
*
* as: 用于在兼容的引用类型之间之行转换。
*/
if (a is IBaseA)
{
IBaseA baseA = a as IBaseA;
Console.WriteLine("baseA:{0}", baseA);
}
else
{
Console.WriteLine("Error!");
}
}
//========================================================================
// メソッド名 : TestBaseB
/// <summary>
/// TestBaseB
/// </summary>
/// <param name="b">辅助变量</param>
//========================================================================
private static void TestBaseB(BaseB b)
{
if (b is IBaseB)
{
IBaseB baseB = b as IBaseB;
Console.WriteLine("baseB:{0}", baseB);
}
else
{
Console.WriteLine("Error!");
}
}
//========================================================================
// メソッド名 : TestMyClass
/// <summary>
/// TestMyClass
/// </summary>
/// <param name="mc">辅助变量</param>
//========================================================================
private static void TestMyClass(MyClass mc)
{
if (mc is IMyClass)
{
IMyClass myClass = mc as IMyClass;
Console.WriteLine("myClass:{0}", myClass);
}
else
{
Console.WriteLine("Error!");
}
}
}
}