C#核心(15)继承中的构造函数

前言

我们之前学过构造函数是什么东西,今天的内容也和构造函数紧密相关,一个继承了父亲的子类里面构造函数的规则是什么样的,今天内容很简单,请听我慢慢讲来。

基本概念

特点:当申明一个子类时,先执行父类的构造函数,再执行子类的,也就是说,先构造出父亲构造的特征,再构造儿子的特征。

  • 注意:父类的无参构造函数很重要
  • 子类可以通过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关键字,这里的内容就算你是基本掌握了。

还是那句话,学习路上,脚踏实地。

请期待我的下一篇博客!

我来自佑梦游戏开发,感谢你的关注和收藏!

相关推荐
苦瓜汤补钙几秒前
Matlab 2022b(中文)的使用教程——Win11
开发语言·matlab
Ai-_Man1 分钟前
我需要批量导出Poe左边栏所有对话,而不是一条具体的对话内容,你们AI导出鸭可以吗?
开发语言·前端·javascript·人工智能·小程序
福大大架构师每日一题3 分钟前
rust 1.99.1 正式更新:聚焦 UEFI、嵌入式、x86_64 FFI 与 macOS 链接体验的三项修复
开发语言·macos·rust
Pin_Qing8 分钟前
缓存能活多久,现在是个要算的参数
java·大数据·开发语言·人工智能·程序人生
小道士写程序8 分钟前
Rust 元组详解:复合类型的基础
开发语言·rust
努力,努力再努力11 分钟前
零依赖 C# Office 库到底怎么用——四个场景讲透 Wisdom.Office
c#
jyOverQ12 分钟前
从零开始学 RocketMQ(四):集群部署、消息存储与高可用【保姆级教程】
java·rocketmq·java-rocketmq
小裕哥略帅18 分钟前
行级数据权限控制@DataPermission
java·开发语言
ZoeLandia23 分钟前
React05:useEffect 与副作用
开发语言·前端·react.js·typescript
ManageEngineITSM25 分钟前
ITSM系统如何与企业微信、钉钉、飞书集成?提升工单处理效率的方法
java·大数据·开发语言·钉钉·企业微信·变更管理