我有一个从边界派生的DraggableBorder类,但是我想让Border.Child变为私有的。 我该怎么办?我可以在C#中的派生类中将公共成员从父类更改为私有?
0
A
回答
2
你不能。它会破坏Liskov's Substitution Principle。如果DraggableBorder
派生自Border
,我希望能够像使用Border
一样使用它。
毕竟,别人也可以这样写:
Border border = new DraggableBorder();
border.Child = ...;
你如何期望编译器停止?
0
您可以通过定义一个新的私有成员
public class DraggableBorder : Border
{
private new object Child {get;set;}
}
这样编译器会阻止您访问原始子属性
DraggableBorder myBorder = ...;
myBorder.Child ; // this will result in a compiler error
隐藏原始儿童然而,这是因为你没有真正的保护可以很容易地解决它
((Border)myBorder).Child; // this will be ok
Border myBaseBorder = myBorder;
myBaseBorder.Child; // this will be ok
相关问题
- 1. 派生类可以访问其基类的私有成员
- 2. 我可以在派生类中创建一个公共成员变量private吗?
- 3. 从基类继承私有成员到派生类C++
- 4. 私人成员如何在C#中的派生类中访问?
- 5. 公共类,但私有成员变量?
- 6. 我可以在基类中修改派生类中的公共插槽的公共函数吗?
- 7. 我们可以从.net中的私有基类型创建派生的公共类型吗?
- 8. 将成员从公共更改为私人
- 9. 为什么派生类继承基类的私有成员?
- 10. 基类的私有成员是否始终在C++的派生类中继承?
- 11. 更改私有类成员的类
- 12. 在派生类中为成员变量使用派生类型
- 13. 为什么我可以通过派生对象的基类指针访问派生的私有成员函数?
- 14. 如何从基类公开继承,但是派生类中的基类有一些私有的公共方法?
- 15. C++中派生类的对象可以被父类访问吗?
- 16. C#继承私有类和公共成员
- 17. C#不能从父类访问表单的公共成员
- 18. 可派生类访问私有静态成员函数
- 19. 从(成员)函数中派生类型
- 20. 我可以让派生类在Java中从其基类继承派生成员吗?
- 21. 如何在派生类中访问基类的私有数据成员?
- 22. 在C++中,我可以从结构中派生一个类
- 23. C++派生类访问基类成员
- 24. 为什么要将基类中的受保护访问更改为派生类中的公共访问权限?
- 25. 有没有办法从CoffeeScript类中的私人函数访问公共成员
- 26. 在派生类中实现虚函数时访问基类私有成员
- 27. 访问继承的私有基类成员...通过派生类对象...在基类成员中创建
- 28. 不可达成员在派生类中的模板类
- 29. 派生类成员函数在C++
- 30. C++:从派生类访问基地或全局变量的私有成员
你到底需要什么? –