前言
我們之前學過構造函數是什么東西,今天的內容也和構造函數緊密相關,一個繼承了父親的子類里面構造函數的規則是什么樣的,今天內容很簡單,請聽我慢慢講來。
基本概念
特點:當申明一個子類時,先執行父類的構造函數,再執行子類的,也就是說,先構造出父親構造的特征,再構造兒子的特征。
- 注意:父類的無參構造函數很重要
- 子類可以通過base關鍵字代表父類,調用父類的構造函數
執行順序:爺——爹——兒——孫
子類實例化時,默認調用父類的無參構造函數
示例
博主寫了一個角色的基類提供使用。然后讓玩家和敵人都去繼承他,然后通過實現構造函數來讓你理解他的執行順序以及base關鍵詞的作用。
留給你們的任務就比較簡單了這次:希望你去寫一個無參構造函數然后為它寫一個子類,觀察一下構造的順序。
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關鍵字,這里的內容就算你是基本掌握了。
還是那句話,學習路上,腳踏實地。
請期待我的下一篇博客!
我來自佑夢游戲開發,感謝你的關注和收藏!