如何从基类继承一些属性

时间:2019-01-03 12:13:04

标签: c# oop inheritance

我遇到了一个场景,我只需要继承基类的几个属性,而保留其他属性。

例如

<div x-ms-format-detection="none" style="display: inline">1234567890</div>

现在,我应该可以使用B.A1,B.B1和B.A3之类的属性,但是我不希望A2在类B ***中可用。请记住,我不想使用private ***,我必须将其保持公开状态,因为它是mongo实体文档,需要存储在mongo DB中

基本上,我正在尝试使用继承在两个实体之间共享一些通用属性。

3 个答案:

答案 0 :(得分:3)

重构。

class AA
{
    public string A1 { get; set; }
}

class A : AA
{
    public string A2 { get; set; }
}

class B : AA
{
    public string A3  { get; set; }
    public string B1  { get; set; }
}

答案 1 :(得分:1)

好吧,如果我们不希望从派生类A2访问属性B,我们 (最有可能)首先不应该使用继承。 我们可以改用聚合:

class A
{
    public string A1 { get; set; }
    public string A2 { get; set; }
}

class B
{
    public string A1 { get; set; }
    public string A3 { get; set; }
    public string B1 { get; set; }

    public B(A instance)
    {
       this.A1 = instance.A1;
    }
}

答案 2 :(得分:-1)

您可以通过用私有变量遮盖公共变量来隐藏它们。

here: undefined

尽管我会退后一步,考虑封装而不是继承。这种带有属性属性的捉迷藏气味。