Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 调用从基类继承的构造函数_C#_Oop_Inheritance - Fatal编程技术网

C# 调用从基类继承的构造函数

C# 调用从基类继承的构造函数,c#,oop,inheritance,C#,Oop,Inheritance,如果我希望id是私有的,id是只读的,那么如何使构造函数工作 即使我希望基类是抽象类,我也应该在基类中包含构造函数吗?您可以为抽象类编写构造函数,就像为普通类编写构造函数一样 对于您的情况,您可以添加一个设置id属性的受保护的ctor public abstract class BaseClass { private int id; public int Id { get { return id; }

如果我希望id是私有的,id是只读的,那么如何使构造函数工作


即使我希望基类是抽象类,我也应该在基类中包含构造函数吗?

您可以为抽象类编写构造函数,就像为普通类编写构造函数一样 对于您的情况,您可以添加一个设置id属性的受保护的ctor

public abstract class BaseClass
    {
        private int id;

        public int Id
        {
            get { return id; }
        }

    }
public class SubClass : BaseClass
    {
        public SubClass(int id)
        {
            this.id = id;
        }
    }

我懂了。为什么我要保护它?不是私有的,因为继承的类不能调用它,不是公共的,因为作为一个抽象类,没有外部代码可以调用新的基类(),所以没有理由让id私有,我也可以保护它?
public abstract class BaseClass
{
    private int id;
    protected BaseClass(int idValue) 
    { 
        id=idValue;
    }

    public int Id
    {
        get { return id; }
    }
}
    
public class SubClass : BaseClass
{
    public SubClass(int id):base(id)
    {
    }
}