前言
我们之前学过构造函数是什么东西,今天的内容也和构造函数紧密相关,一个继承了父亲的子类里面构造函数的规则是什么样的,今天内容很简单,请听我慢慢讲来。
基本概念
特点:当申明一个子类时,先执行父类的构造函数,再执行子类的,也就是说,先构造出父亲构造的特征,再构造儿子的特征。
- 注意:父类的无参构造函数很重要
- 子类可以通过base关键字代表父类,调用父类的构造函数
执行顺序:爷------爹------儿------孙
子类实例化时,默认调用父类的无参构造函数
示例
博主写了一个角色的基类提供使用。然后让玩家和敌人都去继承他,然后通过实现构造函数来让你理解他的执行顺序以及base关键词的作用。
留给你们的任务就比较简单了这次:希望你去写一个无参构造函数然后为它写一个子类,观察一下构造的顺序。
csharp
using System;
// 角色基类
public class Character
{
protected string name;
protected int health;
public Character(string name, int health)
{
this.name = name;
this.health = health;
}
public virtual void DisplayInfo()
{
Console.WriteLine($"Name: {name}\nHealth: {health}");
}
}
// 玩家类
public class Player : Character
{
private int level;
public Player(string name, int health, int level) : base(name, health)//通过base调用有参构造
{
this.level = level;
}
public override void DisplayInfo()
{
base.DisplayInfo();//调用父类里的方法
Console.WriteLine($"Level: {level}");
}
}
// 敌人类
public class Enemy : Character
{
private int damage;
public Enemy(string name, int health, int damage) : base(name, health)
{
this.damage = damage;
}
public override void DisplayInfo()
{
base.DisplayInfo();
Console.WriteLine($"Damage: {damage}");
}
}
public class Program
{
public static void Main(string[] args)
{
Player player = new Player("John", 100, 5);
player.DisplayInfo();
Console.WriteLine();
Enemy enemy = new Enemy("Goblin", 50, 10);
enemy.DisplayInfo();
}
}
总结
继承中的构造函数,其实核心的知识点就只有一个,就是从大到小执行。
然后理解base关键字,这里的内容就算你是基本掌握了。
还是那句话,学习路上,脚踏实地。
请期待我的下一篇博客!
我来自佑梦游戏开发,感谢你的关注和收藏!