gpt4 book ai didi

c# - 为什么抽象类可以有构造函数?

转载 作者:行者123 更新时间:2023-12-03 13:26:59 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Constructor of an abstract class in C#

(14 个回答)



Can an abstract class have a constructor?

(22 个回答)


7年前关闭。




为什么抽象类有构造函数?重点是什么?很明显,我们不能创建抽象类的实例。

最佳答案

一个重要的原因是由于在派生构造函数执行之前对基本构造函数进行了隐式调用。请记住,与接口(interface)不同,抽象类确实包含实现。该实现可能需要字段初始化或其他实例成员。请注意以下示例和输出:

   abstract class Animal
{
public string DefaultMessage { get; set; }

public Animal()
{
Console.WriteLine("Animal constructor called");
DefaultMessage = "Default Speak";
}
public virtual void Speak()
{
Console.WriteLine(DefaultMessage);
}
}

class Dog : Animal
{
public Dog(): base()//base() redundant. There's an implicit call to base here.
{
Console.WriteLine("Dog constructor called");
}
public override void Speak()
{
Console.WriteLine("Custom Speak");//append new behavior
base.Speak();//Re-use base behavior too
}
}

虽然我们不能直接构造 Animalnew ,构造函数在我们构造 Dog 时被隐式调用。 .

输出:
调用动物构造函数
狗构造函数调用
自定义说话
默认说话

关于c# - 为什么抽象类可以有构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19944644/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com