關於基類和派生類訪問類變量的問題,高手請進!

liuhaijin 2003-08-20 09:20:22
在同一域名空間下有三個類a和b和c,在b中定義變量protected string x="";類a是b的派生類(public class a:b),b是c的派生類(public class b:c)。

有幾個問題不太明白:

1、在a中直接用類名.變量名(b.x)無法訪問到b中的x,但在b的基類c中用類名.變量名(b.x)卻行,而且在b中這樣訪問也可以。為何在c和b中可以這樣訪問而在a中就不行

2、在a中用base.x這樣可以訪問到b中的x變量,a中使用base.x和直接用類名.變量名(b.x)有什麼不同?

請各位大哥給小弟詳細解釋一下,謝謝!
...全文
145 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
laserman 2003-08-21
  • 打赏
  • 举报
回复
類名.變量名访问静态成员,base.x访问父类成员,和C++不一样,不能直接访问祖先类以上的成员。
liuhaijin 2003-08-21
  • 打赏
  • 举报
回复
謝樓上的朋友
a中使用base.x和直接用類名.變量名(b.x)這兩種方法有什麼不同?
heatwin 2003-08-21
  • 打赏
  • 举报
回复
我是这么理解的:a继承了b,且x在b中为protected,故a中也具有x这个属性变量,你欲访问其基类的变量(除private变量只可通过方法访问外),只可用base.变量名(c#中不支持多继承,所以不用担心像C++一样)。
dawave 2003-08-21
  • 打赏
  • 举报
回复
你是在casting遇到的这样的问题吗?
xhwy888 2003-08-20
  • 打赏
  • 举报
回复
up
liuhaijin 2003-08-20
  • 打赏
  • 举报
回复
再顶!
liuhaijin 2003-08-20
  • 打赏
  • 举报
回复
up

110,534

社区成员

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

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

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