我有两节课:
public class A
{
}
public sealed class B : A
{
}
而且我希望只有我的B
类(在同一个程序集中定义A
)可以继承A
.
我能怎么做?
我有两节课:
public class A
{
}
public sealed class B : A
{
}
而且我希望只有我的B
类(在同一个程序集中定义A
)可以继承A
.
我能怎么做?
而且我希望只有我的 B 类(在 A 的同一程序集中定义)可以继承 A。我该怎么办?
那么根本不需要继承..
public sealed class B
{
//includes all methods of A and B
}
您可以使用internal
构造函数,这可以防止其他程序集使用您的类。
public class A
{
internal A() { }
}
public sealed class B : A { }
而且,如果您不关心性能:
public class A
{
public A()
{
Type c = GetType();
if (c != typeof(A) && c != typeof(B)) throw ....;
}
}
我建议您使用组合而不是继承来限制基类型成员的可见性。
如果只有 B 可以继承 A,那么你真的需要继承吗?
如果要拆分一个变得太大的班级,那么您就没有遵循良好的做法,因为它不太可能承担单一责任。
现在,如果由于某些尴尬的原因你确实需要这个,你可以试试:
public class B
{
private sealed class A : B
{
}
}
并根据您的需要进行调整。