1、多态的使用
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
// 定义一个叫Enemy的基类
public class Enemy
{
//构造函数
public Enemy()
{
Console.WriteLine("enemy contructor");
}
// 声明为虚方法
public virtual void UpdateAI()
{
// Enemy的AI
Console.WriteLine("update enemy ai");
}
}
// 派生类Boss继承自基类Enemy,
public class Boss : Enemy
{
//构造函数
public Boss()
{
Console.WriteLine("boss contructor");
}
//添加override,代替基类的方法
public override void UpdateAI()
{
// Boss 的AI
Console.WriteLine("update boss ai");
}
}
class Program
{
static void Main(string[] args)
{
Enemy[] enemies = new Enemy[2]; //创建一个数组,包括两个Enemy基类
enemies[0] = new Enemy(); //创建一个Enemy, 执行Enemy的构造函数
enemies[1] = new Boss(); //创建一个Boss,先执行Enemy的构造函数,再执行Boss的
for (int i = 0; i < 2; i++)
{
// enemies[0]会调用Enemy类的UpdateAI
// enemies[1]会调用Boss类的UpdateAI
enemies[i].UpdateAI();
}
// 输入任意键退出
Console.ReadKey();
}
}
}
2、static对象
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
public class Player
{
public static int count = 0; //静态成员,用于统计Player对象的数量
public Player()
{
count++; // 每创建一个Player对象,count自加一次
}
}
class Program
{
static void Main(string[] args)
{
Player player1 = new Player(); //创建一个Player对象
Console.WriteLine(Player.count);// 输出1,有1个Player
Player player2 = new Player();// 又创建一个Player对象
Console.WriteLine(Player.count); // 输出2,有2个Player
// n = player2.count; 错误用法,静态成员不能被对象直接调用
// 输入任意键退出
Console.ReadKey();
}
}
}