在每个子类中使用基类中的一些属性

本文关键字:属性 基类 子类 | 更新日期: 2024-10-24 06:06:56

有什么方法可以给子类一些属性吗?

我有一个场景,其中所有子类都包含来自基类的属性,但不是所有属性。

假设我有所有类的属性

public string AAAAA    { get; set; }
public string ABbbb    { get; set; }
public string ACCCCC   { get; set; }
public string ADDDDDD  { get; set; }
public string AEEEEE   { get; set; }
public string BBBBBB   { get; set; }
public string BBBAAA   { get; set; }
public string CCCCAAA  { get; set; }
public string DDDAAAA  { get; set; }

在A类中,我只想要

aaaa-

BBBAAA

属性,在B类中我想要所有属性,在C类中只想要

ACCCCC

BBBAAA

等等…我有办法做到这一点吗?

在每个子类中使用基类中的一些属性

我认为你想要达到的是这样的东西:

public interface ITypeAny
{
    string MyCommonProperty { get; set; }
}
public interface ITypeA : ITypeAny
{
    string AAA { get; set; }
}
public interface ITypeB : ITypeAny
{
    string BBB { get; set; }
}
public abstract class TypeAny : ITypeAny
{
    public string MyCommonProperty { get; set; }
}
public class TypeA : TypeAny, ITypeA
{
    public string AAA { get; set; }
}
public class TypeB : TypeAny, ITypeB
{
    public string BBB { get; set; }
}

通过这种方式,您可以为所有子类拥有公共属性(您将其视为ITypeAny),同时为某些子类拥有特定属性(在这种情况下,您必须将它们视为ITypeAITypeB)。

其他答案都很好,因为它们试图帮助你,而不考虑缺乏具体的例子。这个答案尽量直截了当。您的问题:

有什么方法可以给子类一些属性吗?

我有一个场景,其中所有子类都包含来自基类的属性,但不是所有属性。

,没有办法让子类只继承基类的某些属性。

你应该重新思考你的设计,并可能提出一个更具体、更具体的问题。(另外,也许您有XY问题?)

您可以使用诸如private、public等修饰符来允许从子类访问成员。一旦基类具有具有公共、内部或受保护修饰符的成员,就不能向同级隐藏它们。所有兄弟姐妹都可以访问这些成员。在您的情况下,您必须将常见成员放入基类,并将所有其他成员放入自己的类中。

由于您不能在C#中使用多重继承,因此您可以使用组合,也可以将特定于实体的成员放入它们自己的类中,如上所述。