没想明白,屏蔽基类的相关属性

showjancn 2006-11-01 08:23:37
我派生了一个新类,增加了新的功能,从而倒致从基类继承来的某些属性是多余或有冲突,必须屏蔽掉,即在派生类中不能再可视了,我想要是私有继承也就解决了,但这样又一棍子打死了所有。个位有没什么好方法?
谢谢!!
...全文
94 5 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
liujia_0421 2006-11-01
  • 打赏
  • 举报
回复
如果是屏蔽组件显示的属性以及方法 ,倒可以参考一下这篇文章:
http://bbs.mscommunity.com/Forums/ShowThread.aspx?PostID=17169
qltouming 2006-11-01
  • 打赏
  • 举报
回复
最近也在考虑类似的问题,在这里想和Knight94(愚翁)讨论下,使用New关键字后,调用subclass的时候是看不到baseclassr的Test()方法了,但subclass却有了自己的Test()方法,且可以被看到.是否subclass的Test()方法不应该给予实现呢?
liujia_0421 2006-11-01
  • 打赏
  • 举报
回复
继承下来的东西肯定会存在的,不能够屏蔽, 当然可以使其方法或属性不在vs的智能提示框里出现是可以的 ,举个例子吧:

public class a
{
private int count = 0;
[BrowsableAttribute(true)]
public int Count
{
get
{
return count;
}
set
{
count = value;
}
}
}
public class b: a
{
[BrowsableAttribute(false)]// 重新定义Count属性且不显示
public new int Count
{
get
{
return base.Count;
}
set
{
base.Count = value;
}
}
}

参考一下,试试看吧...
JasonHeung 2006-11-01
  • 打赏
  • 举报
回复
原因有二:
基类设计的不合理
你的继承处理不合理
解决办法有三:
重新设计基类
重新设计派生类
基类和派生类都从另外的接口或者基类派生
Knight94 2006-11-01
  • 打赏
  • 举报
回复
to 我派生了一个新类,增加了新的功能,从而倒致从基类继承来的某些属性是多余或有冲突,必须屏蔽掉,即在派生类中不能再可视了,我想要是私有继承也就解决了,但这样又一棍子打死了所有。个位有没什么好方法?

用new关键字,例如:
public class baseclass
{
public void Test();
}

public class subclass:baseclass
{
public new void Test();
}
发帖
C#

10.9w+

社区成员

.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
帖子事件
创建了帖子
2006-11-01 08:23
社区公告

让您成为最强悍的C#开发者