using System;
using System.Windows.Forms;
namespace InterfaceExample
{
//接口
public interface 会飞的东西
{
void 飞行();
}
//抽象类
public abstract class 鸟类 : 会飞的东西
{
//虚方法
public virtual void 飞行()
{
Console.WriteLine("鸟类飞行!");
}
void 会飞的东西.飞行()
{
}
//抽象属性
public abstract string 名称
{
get;
set;
}
//抽象方法
public abstract string 获取鸟的名字();
}
//具体类
public class 鹰 : 鸟类
{
private string 变量1;
//构造函数
public 鹰(string 名称)
{
变量1 = 名称;
}
public override string 名称
{
get{return 变量1;}
set{变量1 = value;}
}
//重写基类方法
public override void 飞行()
{
Console.WriteLine("鹰在飞行");
}
public override string 获取鸟的名字()
{
return 变量1;
}
}
//接口
public interface 飞机 : 会飞的东西
{
string 类型
{
get;
}
string 获取名称();
}
//具体类
public class 战斗机 : 飞机
{
public string 类型
{
get{ return "飞机类型:战斗机"; }
}
public string 获取名称()
{
return "战斗机";
}
public void 飞行()
{
Console.WriteLine("战斗机飞行");
}
void 会飞的东西.飞行()
{
Console.WriteLine("战斗机在基类中飞行");
}
}
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
鸟类 一只鸟 = new 鹰("灰色的老鹰");
战斗机 一架飞机 = new 战斗机();
Console.WriteLine(一只鸟.名称);//灰色的老鹰
一只鸟.名称 = "黑色老鹰";
Console.WriteLine(一只鸟.名称);//黑色老鹰
Console.WriteLine(一只鸟.获取鸟的名字());//黑色老鹰
一只鸟.飞行();
Console.WriteLine(一架飞机.类型);//飞机类型:战斗机
Console.WriteLine(一架飞机.获取名称());//战斗机
一架飞机.飞行();//战斗机
会飞的东西 飞行物 = 一只鸟;
飞行物.飞行();//鹰在飞行!
飞行物 = 一架飞机;
飞行物.飞行();//战斗机飞行
Console.ReadLine();
BaseClass bc = new BaseClass();
bc.Print();
IBaseClass ibc = bc;
ibc.Print();
Console.Read();
}
}
interface IBaseClass
{
void Print();
}
class BaseClass:IBaseClass
{
virtual public void Print()
{
MessageBox.Show("基类的Print()函数被调用");
}
void IBaseClass.Print()
{
MessageBox.Show("接口中的Print函数的实现");
}
}
}