关于类继承的问题

andylee37102008 2010-01-26 09:52:23
public class aa
{
public string a
{
set;
get;
}
}

public class bb:aa
{
public string b
{
set;
get;
}
}

public class main()
{
aa a =new bb();
//我想通过这样的实例化得到a.b这个属性,但是没有成功,如何才能得到?
}
...全文
81 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyerwing 2010-01-26
  • 打赏
  • 举报
回复
好象不行吧
mohugomohu 2010-01-26
  • 打赏
  • 举报
回复
aa.bb bb=new aa.bb();
shighui 2010-01-26
  • 打赏
  • 举报
回复


xujiaoxiang 2010-01-26
  • 打赏
  • 举报
回复
为什么要这样做?
虽然对象a实际上是类bb的实例,但是编译器并不知道,这样当然无法通过编译。

如果一定要调用a.b这个属性,可以这样
bb b = (bb)a;
string s = b.b;
随风 2010-01-26
  • 打赏
  • 举报
回复
aa a =new bb();
因为名义上是aa的,所以只能当它是aa来处理

后面加一个 bb b = a as bb; 也就可以了
另外一般处理方式是在aa里说明子类后有b属性,那么把b属性的定义放到aa里。
zhujiazhi 2010-01-26
  • 打赏
  • 举报
回复
aa a =new bb();
((bb)a).b = "hello world";
ctwei86 2010-01-26
  • 打赏
  • 举报
回复
aa a =new bb();
这样声明的a是aa修饰,这样之后a只能访问aa本来有的东西,对于bb里面有的东西,a也有,但是不能访问,除非将a进行强转,
如(bb)a或者a as bb;
试想下,aa是父类,bb是子类,子类继承父类,能引用父类的除private修饰的东西,但是父类是不会知道子类有什么的,所以,a调b就太牵强了,也不符合逻辑。

111,120

社区成员

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

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

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