一个面向对象的模型设计问题

shangwei97 2011-05-04 04:47:32
现在要实现一种模型,一个父类派生多个子类的问题,子类中的属性值多不相同,只有少数属性值可以继承,在设计父类的时候,父类是否要包含所有子类的属性?
我觉得不应该包括,可是他们之间确有继承关系该如何处理?
如果写接口多重继承吧,接口里面写属性不是很舒服?而且要写接口会有很多接口,麻烦?有没有更好的办法?
谢谢大家帮忙
...全文
241 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
shangwei97 2011-05-05
  • 打赏
  • 举报
回复
我就是想实现一个windows的控件的模型,类似于C#里面的Element接口或者父类——button,TextBlock等等子类
父类里面可能会在以后添加其他的共有属性。

应该是用接口比较好。我再想想
threenewbee 2011-05-05
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 shangwei97 的回复:]
我就是想实现一个windows的控件的模型,类似于C#里面的Element接口或者父类——button,TextBlock等等子类
父类里面可能会在以后添加其他的共有属性。

应该是用接口比较好。我再想想
[/Quote]
建议你不要用什么类,直接使用 Dictionary,键值对集合保存属性。
xuStanly 2011-05-04
  • 打赏
  • 举报
回复
一般建议多用接口,慎用父类。
threenewbee 2011-05-04
  • 打赏
  • 举报
回复
具体问题,具体分析。

一方面你的问题已经描述了你解决问题的倾向,另一方面别人不知道你的问题是什么。
cloudtian101 2011-05-04
  • 打赏
  • 举报
回复
如果没有继承多个属性为什么要继承?没有明显的继承关系非要强加父子关系,当然别扭。
qw_zr 2011-05-04
  • 打赏
  • 举报
回复
如上所述,根本不需要所谓的“多重继承”和接口。
qw_zr 2011-05-04
  • 打赏
  • 举报
回复

public class Father
{
private string _id;
public string Id
{
get { return _id; }
set { _id = value; }
}
}

public class Son1 : Father
{
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
}

public class Son2 : Father
{
private int _width;
public int Width
{
get { return _width; }
set { _width = value; }
}
}

public class TestClass
{
public void Test()
{
Father son1 = new Son1();
Father son2 = new Son2();
string son1_Id = son1.Id;
string son2_id = son2.Id;
string son1_Name = ((Son1)son1).Name;
Son2 son2xxxx = son2 as Son2;
int width = son2xxxx.Width;
}
}

CShareMySide 2011-05-04
  • 打赏
  • 举报
回复
不要依赖反了,不然的话没发设计了

你说的,应该是把ID当着基类,别的类继承ID

应该理解为那个id有高度

那个id的高度要居中

那个id的名字和值是多少

而高度、居中、名字和值之间没任何关系
wlf535944903 2011-05-04
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 vrhero 的回复:]

当然别扭...你那些所谓“子类”除了ID压根儿就没关系,不要滥用继承...

你只需要声明个有ID属性的接口...那些个所谓“子类”各玩儿各的,哪来的什么父类...
[/Quote]

请问如果声明有ID属性的父类 可以么?
遥望那些年 2011-05-04
  • 打赏
  • 举报
回复
可以在对象浏览器中,查看一下WebControls.TextBox WebControls.Panel等等WebControl的子类,看看他们和父类WebControl的关系
vrhero 2011-05-04
  • 打赏
  • 举报
回复
当然别扭...你那些所谓“子类”除了ID压根儿就没关系,不要滥用继承...

你只需要声明个有ID属性的接口...那些个所谓“子类”各玩儿各的,哪来的什么父类...
shangwei97 2011-05-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 vrhero 的回复:]
不同的属性为什么要包含?父类吃饱了撑的?接口里面写属性哪里让你不舒服了?
[/Quote]
我现在父类里只有一个ID属性,
有一个子类要name和value属性,我就要写一个接口包括name和value,还有个子类是high和widht,那么又要写一个接口;如果一个子类是有是否居中和hight和width的属性,那么我是再写一个接口呢,还是继承原有的接口做扩充?
感觉这么用很别扭
xuexiaodong2009 2011-05-04
  • 打赏
  • 举报
回复
子类中的属性值多不相同,所以不要再父类里写,可以通过虚方法实现
vrhero 2011-05-04
  • 打赏
  • 举报
回复
不同的属性为什么要包含?父类吃饱了撑的?接口里面写属性哪里让你不舒服了?

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧