第二十二式:C# 继承 (师徒传承)

绝世
秘籍
冲儿,你虽是华山弟子,但日后若要自立门户,不必从头创起。
你可以继承华山派的武功,然后再加以改进。这在 C# 中叫做继承 (Inheritance)
就是说,我可以白嫖师傅的剑法,然后自己再加点独孤九剑进去?
咳咳!这叫“发扬光大”!
子类 (Derived Class) 继承 父类 (Base Class),就自动拥有了父类的所有公开(public/protected)属性和方法。

1. 语法 - 认祖归宗

使用冒号 : 来表示继承关系。


// 父类:普通侠客
class Swordsman
{
    public string Name;
    public void BasicAttack()
    {
        Console.WriteLine("普通一刺!");
    }
}

// 子类:华山弟子 (继承自 Swordsman)
class HuaShanDisciple : Swordsman
{
    public void SpecialSkill()
    {
        Console.WriteLine("有凤来仪!");
    }
}
        

2. 使用 - 青出于蓝


HuaShanDisciple linghu = new HuaShanDisciple();
linghu.Name = "令狐冲";

linghu.BasicAttack();  // 调用父类的方法(普通一刺)
linghu.SpecialSkill(); // 调用子类的方法(有凤来仪)
        
C# 讲究单继承,也就是一个徒弟只能有一个正式的师父(父类)。
不像有些江湖浪子(C++),可以拜好几个师父(多继承),那样容易内息紊乱(菱形继承问题)。
如果想学百家之长,请用接口 (Interface)
👪

动手时刻:魔教中人

创建一个父类 Person,有一个方法 SayHi()

创建一个子类 Demon (魔教教众),继承自 Person,并添加一个新方法 Shout()

在 Main 中实例化一个 Demon,并调用这两个方法。

查看参考答案

class Person
{
    public void SayHi() { Console.WriteLine("你好"); }
}

class Demon : Person
{
    public void Shout() { Console.WriteLine("千秋万载,一统江湖!"); }
}

// Main:
Demon dongfang = new Demon();
dongfang.SayHi(); // 继承来的
dongfang.Shout(); // 自己的
                    

成就解锁:【薪火相传】 获得:掌门传位诏书