C#: 派生类继承基类的所有成员,包括基类的私有成员……
答案:3 悬赏:50 手机版
解决时间 2021-11-17 02:04
- 提问者网友:且恨且铭记
- 2021-11-16 19:26
C#: 派生类继承基类的所有成员,包括基类的私有成员……
最佳答案
- 五星知识达人网友:刀戟声无边
- 2021-11-16 20:01
楼主你好。答案就是:继承了,但是无法访问。
为什么呢?我们用一个例子来证明。比如我们有个基类
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 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才可以有机会调用到私有成员。
这就是类的封装。
封装好的类,可以让继承的类在使用基类的方法的时候,不必关心里面的运算过程和涉及到的变量,也起到了一定的知识保护的效果。
全部回答
- 1楼网友:神也偏爱
- 2021-11-16 21:39
可以这样理解,继承了不能用。你也可以理解为私有的不能继承。
算是一个争议问题。
算是一个争议问题。
- 2楼网友:低血压的长颈鹿
- 2021-11-16 20:24
只继承public和protect,退一步说,私有的即使被继承了也没有意义,我的理解是:
私有成员其实已经被继承了,但是它们却不可以被访问,因为私有成员只能被声明它们的类或结构体中才可访问,所以看上去像是没有被继承。
私有成员其实已经被继承了,但是它们却不可以被访问,因为私有成员只能被声明它们的类或结构体中才可访问,所以看上去像是没有被继承。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯