C#中继承类为什么可以通过属性访问基类的私有字段。
通常字段都是私有的,而属性都是公有的,公有派生后,派生类里没有派生私有成员。但在派生类里调用本类中的属性时,属性里没有派生私有字段,为什么语法能通过。...
通常字段都是私有的,而属性都是公有的,公有派生后,派生类里没有派生私有成员。
但在派生类里调用本类中的属性时,属性里没有派生私有字段,为什么语法能通过。 展开
但在派生类里调用本类中的属性时,属性里没有派生私有字段,为什么语法能通过。 展开
4个回答
展开全部
根据查阅相关资料,得出以下结论
1:访问的其实不是基类私有字段!
以前学习的时候由于老师水平只广不深,(可不能怪老师,可能是某些教材误导了他),继承,会把基类的所有都继承过去,你可以理解成复制了一份,其实是包括私有字段的(子类会给他分配空间),(这里与广为流传的私有成员不能被继承的描述不服,也是最为误人,扭曲的一点!),继承后,你是不能直接访问自己的这个已继承的私有成员的,代码感知点它也不会出现,想要访问它,如果父类提供了能访问(父类的)它的公共或者保护方法,那么子类就可以通过这个方法来访问这个(自己的)私有字段,说起来很拗口,有空可以自己实验一下,如果错误,敬请指正,我最怕的就是武断过激的,或者朦朦胧胧的回答,很害人的!
1:访问的其实不是基类私有字段!
以前学习的时候由于老师水平只广不深,(可不能怪老师,可能是某些教材误导了他),继承,会把基类的所有都继承过去,你可以理解成复制了一份,其实是包括私有字段的(子类会给他分配空间),(这里与广为流传的私有成员不能被继承的描述不服,也是最为误人,扭曲的一点!),继承后,你是不能直接访问自己的这个已继承的私有成员的,代码感知点它也不会出现,想要访问它,如果父类提供了能访问(父类的)它的公共或者保护方法,那么子类就可以通过这个方法来访问这个(自己的)私有字段,说起来很拗口,有空可以自己实验一下,如果错误,敬请指正,我最怕的就是武断过激的,或者朦朦胧胧的回答,很害人的!
Storm代理
2023-08-29 广告
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I...
点击进入详情页
本回答由Storm代理提供
展开全部
private 是共享级别比较低的修饰符,只能在本类中调用,属性的含义就是增加两个属性方法,对本类中私有成员进行读写,属性方法的修饰符是public,所有实例化或者继承于该类的成员都可以访问public对象。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个属性方法是公有的嘛.是间接的访问了基类的私有字段.所以可以.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
那要看你把属性设置成什么样得了 public可以 如果是private也不能访问啊
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询