关于方法继承的问题

liul17 2009-03-19 03:40:48
有两个类,B类继承A类,A类中有个Clone方法,B类中也有,如何在B类的Clone方法中先执行A类的Clone方法,然后把B类的特有属性赋值后,返回B类?

public A {
//属性定义(省略了set get)
private int _num;
private string _text;
public A Clone(){
A copy = new A();
copy.Num = this._num;
copy.Text = this._text;
return copy;
}

}

public B : A{
//属性定义(省略了set get)
private int _count;
public B Clone(){

??????????? ///这部分怎么写才能以最好的结构实现,先做A.clone,然后再把B中的Count赋值

}
}

这个问题可以用代码一点一点写出来,但我觉得可以通过抽象或接口这种东西搞定,但现在不太熟,大家帮看看,谢谢



...全文
140 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ireenter 2009-03-20
  • 打赏
  • 举报
回复
public B : A{
//属性定义(省略了set get)
private int _count;
public B Clone(): base.Clone()
{

}
}
purplesunshine 2009-03-20
  • 打赏
  • 举报
回复
对头。6楼用的理念可以参考一下Design Pattern中的包装模式
春天的气息 2009-03-19
  • 打赏
  • 举报
回复
楼上说清楚了吧,


------------------------------------------
欢迎加入我的程序设计QQ群80532706哟
请注册bbs.bbs180.com,并写清把ID号,然后加入群。
cja03 2009-03-19
  • 打赏
  • 举报
回复

public class A
{
public A(string Name)
{
this.Name = Name;
}

public string Name { get; set; }

public A Clone()
{
return (A)this.MemberwiseClone();
}
}

public class B : A
{
public B(string Name)
: base(Name)
{
this.Count = 0;
}

public int Count { get; set; }

public new B Clone()
{
B b = (B)base.Clone();
b.Count = 1;
return b;
}
}



B b = new B("test");//b.Name="test";b.Count=0;
B c = b.Clone();//c.Name="test";c.Count=1;
yingmu 2009-03-19
  • 打赏
  • 举报
回复
用base.Clone()来调用
jjcheung 2009-03-19
  • 打赏
  • 举报
回复
实现Clone()最好还是实现ICloneable接口和使用object.MemberwiseClone()方法。
hanjinkai 2009-03-19
  • 打赏
  • 举报
回复
就用A,B 对象做前缀来区分应该就可以啊
liul17 2009-03-19
  • 打赏
  • 举报
回复
我知道可以base.Clone
public B : A{
//属性定义(省略了set get)
private int _count;
public B Clone(){
B b = new B();
A a = base.Clone();
?????????? 这块应该怎么写呢? 我只是觉得可以用其它方法实现,比较抽象啥的
return b;
}
}
cja03 2009-03-19
  • 打赏
  • 举报
回复
调用基类的东西,可用 base.

111,092

社区成员

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

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

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