我遇到了一个场景,我只需要继承基类的几个属性,而保留其他属性。
例如
<div x-ms-format-detection="none" style="display: inline">1234567890</div>
现在,我应该可以使用B.A1,B.B1和B.A3之类的属性,但是我不希望A2在类B ***中可用。请记住,我不想使用private ***,我必须将其保持公开状态,因为它是mongo实体文档,需要存储在mongo DB中
基本上,我正在尝试使用继承在两个实体之间共享一些通用属性。
答案 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
尽管我会退后一步,考虑封装而不是继承。这种带有属性属性的捉迷藏气味。