一、语法介绍
1、继承概念和类型
2、多重继承:C#不支持多重实现继承,但支持多重接口继承
3、虚方法
4、隐藏方法
5、this和base
6、派生类的构造函数
7、修饰符
8、接口
二、语法实践
//继承基类EnemyBase using System; namespace 面向对象编程 { /// <summary> /// 怪物和敌人的基类 /// </summary> class EnemyBase { public EnemyBase() { Console.WriteLine("这里是基类的无参构造函数"); } public EnemyBase(int hp) { this.hp = hp; Console.WriteLine("这里是父类的带参的构造函数"); } //公有属性 private float hp; private float speed; protected int level; public float HP { get { Console.WriteLine("获取基类的血量属性 == " + hp); return hp; } set { Console.WriteLine("设置基类的血量属性 == " + value); hp = value; } } public float Speed { get { Console.WriteLine("获取基类的速度属性 == " + speed); return speed; } set { Console.WriteLine("设置基类的速度属性 == " + value); speed = value; } } /// <summary> /// 公有行为 /// </summary> public void AI() { ReleaseSkills(); Console.WriteLine("这里是基类的AI方法"); } /// <summary> /// 公有移动 /// </summary> public void Move() { Console.WriteLine("这里是基类的Move方法"); } /// <summary> /// 父类释放技能的虚方法 /// </summary> public virtual void ReleaseSkills() { Console.WriteLine("这里是基类的ReleaseSkills虚方法"); } public void PlayAnimation() { Console.WriteLine("这里是基类的PlayAnimation方法"); } } }
//怪物子类:Boss using System; namespace 面向对象编程 { class Boss : EnemyBase { public void Attack() { AI(); Console.WriteLine("这里是Boss类的攻击方法"); } public override void ReleaseSkills() { Console.WriteLine("这里是Boss类重写的释放技能的方法"); } } }
//怪物子类:Monster using System; namespace 面向对象编程 { class Monster : EnemyBase { private int exp; public Monster():base()//使用base会 先调用父类的构造函数,然后调用自身的构造函数 { Console.WriteLine("这里是子类Monster的无参构造函数"); } public Monster(int exp, int hp):base(hp) { this.exp = exp; Console.WriteLine("这里是子类Monster里面的带参的构造函数"); } public void Defence() { Move(); Console.WriteLine("这里是Monster类的防御方法"); } public override void ReleaseSkills() { Console.WriteLine("这里是Monster类重写的释放技能的方法"); } /// <summary> /// 父类有与此方法签名相同的方法,此方法会将父类中的方法隐藏(可以在此方法前添加new关键字表示隐藏),使用哪个类声明的调用那个类的方法 /// </summary> public new void PlayAnimation() { Console.WriteLine("这里是Monster类中的隐藏方法"); } } }
//实现类 using System; namespace 面向对象编程 { class Program { static void Main(string[] args) { //继承 EnemyBase enemyBase = new Boss(); Boss boss = (Boss)enemyBase; boss.Attack(); Monster monster = new Monster(); monster.HP = 100; monster.PlayAnimation(); EnemyBase menemyBase = new Monster(); menemyBase.PlayAnimation(); Monster mmonster = new Monster(50, 100); Console.ReadKey(); } } }