在每个子类中使用基类中的一些属性
本文关键字:属性 基类 子类 | 更新日期: 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
),同时为某些子类拥有特定属性(在这种情况下,您必须将它们视为ITypeA
或ITypeB
)。
其他答案都很好,因为它们试图帮助你,而不考虑缺乏具体的例子。这个答案尽量直截了当。您的问题:
有什么方法可以给子类一些属性吗?
我有一个场景,其中所有子类都包含来自基类的属性,但不是所有属性。
否,没有办法让子类只继承基类的某些属性。
你应该重新思考你的设计,并可能提出一个更具体、更具体的问题。(另外,也许您有XY问题?)
您可以使用诸如private、public等修饰符来允许从子类访问成员。一旦基类具有具有公共、内部或受保护修饰符的成员,就不能向同级隐藏它们。所有兄弟姐妹都可以访问这些成员。在您的情况下,您必须将常见成员放入基类,并将所有其他成员放入自己的类中。
由于您不能在C#中使用多重继承,因此您可以使用组合,也可以将特定于实体的成员放入它们自己的类中,如上所述。