永发信息网

C#: 派生类继承基类的所有成员,包括基类的私有成员……

答案:3  悬赏:50  手机版
解决时间 2021-11-17 02:04
C#: 派生类继承基类的所有成员,包括基类的私有成员……
最佳答案
楼主你好。答案就是:继承了,但是无法访问。


为什么呢?我们用一个例子来证明。比如我们有个基类
public class A
{
    //私有成员name
    private string name = "AAA";
    public string GetName()
    {
        return name;
    }
}它有一个私有成员name,和一个保护的方法GetName()
然后我们写个空类来继承他
public class B : A
{  
}好了,如果我们实例化这个类,并调用GetName方法,并输出它
B b = new B();
string name = b.GetName();
Console.WriteLine(name);你说会显示什么呢?



当然会显示"AAA"


为什么?我new的只是B而已,B是一个空类,里面啥都没有,哪里来的"AAA"?
就是从A里继承来的。
其实B拥有所有A有的东西,只不过A设为私有的成员和方法,B是无法访问的。
除非A提供了类似GetName这种方法,B才可以有机会调用到私有成员。
这就是类的封装。


封装好的类,可以让继承的类在使用基类的方法的时候,不必关心里面的运算过程和涉及到的变量,也起到了一定的知识保护的效果。
全部回答
可以这样理解,继承了不能用。你也可以理解为私有的不能继承。
算是一个争议问题。
只继承public和protect,退一步说,私有的即使被继承了也没有意义,我的理解是:

私有成员其实已经被继承了,但是它们却不可以被访问,因为私有成员只能被声明它们的类或结构体中才可访问,所以看上去像是没有被继承。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
命中数定二五今虎啸龙吟人敬畏四二扶米直上前
从湖西桥到工农大路(红旗街)怎么坐公交车,
in a rush 是什么意思?I was in a rush to g
百合花的朵数含义?
在反应2A+5B=2C+4D中,C、D的相对分子质量之
谜语天下第一大笨蛋打一菜名是什么
泸水市农调队在什么地方啊,我要过去处理事情
english weekly同步评估答案网
德清武康上柏沈园门票多少钱
金浩二手车交易地址有知道的么?有点事想过去
在汽配从底层做起,主要做丰田汽配 有前途吗
为什么说易经难学?我觉得比起高等数学易学多
杜尔伯特蒙古族自治县公证处地址好找么,我有
名人资料大全有哪些
为何库里三分那么准
推荐资讯
Excel 怎样根据答案突出显示选项
厦门到重庆的k4068次火车票为什么时间不同价
江阴哪里有学习CAD 江阴CAD培训班
波分设备主控板 s是备用还是主用
iphone iOS10邮箱设置qq邮箱
马上要装修了,想在孩子房间做一面涂鸦墙,听
中兴U880下载视频?
金华火腿的简易做法
求好看的港剧~~~
周记炒面在什么地方啊,我要过去处理事情
蓝天幼儿园早教中心地址好找么,我有些事要过
cf职业玩家小刘的开场白是什么?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?