A类派生自B类。在A类中,我想隐藏从B类继承的一些属性。因此,当创建A类实例时,我不想暴露B类中的某些属性。
这可能吗?
答案 0 :(得分:8)
不,那会破坏继承的目的。您的A类是B
,因此它具有B
答案 1 :(得分:2)
是否可以将私有访问说明符用于您要隐藏的属性?
如果没有,那么请通过这个链接 - 可能会帮助你 - c# hide from dervied classes some properties of base class
答案 2 :(得分:2)
您可以通过声明具有相同名称(和新修饰符)的新成员来遮蔽成员。但这并没有真正隐藏任何东西,并且不会阻止任何人回到B并以这种方式访问成员。
在这种情况下,您确定要真正使用继承吗?您可能需要阅读http://en.wikipedia.org/wiki/Liskov_substitution_principle
答案 3 :(得分:2)
当您从A
派生B
时,您说A
与B
几乎相同,但它具有其他特征;它是B
的专业化。
举个例子:Dog
是Animal
。在你的情况下,你试图说Animal
有鳍,但是Dog
却没有;这绝对不是继承的目的。
答案 4 :(得分:1)
为实现这一目标,不要将属性设为私有,而应避免继承并应用组合(即使用接口)。
答案 5 :(得分:0)
你的意思是:
class A {
public virtual int X {
get { return 1; }
}
}
class B : A {
public sealed override int X {
get { return 2; }
}
}
class C : B {
public override int X {
get { return -1; }
}
}
如果是的话,是的。 (以上在C
中提供了编译时错误)。这里的含义是A
有一个属性,B
实现了它,并希望阻止任何子类这样做。