私有成员变量与共有属性问题

周公
博客专家认证
2007-01-31 05:54:54
有如下类:
--------------------------------------------------------------
GrandFather.cs
--------------------------------------------------------------
public class GrandFather
{
private int age;
private string name;
public GrandFather()
{
}

public int Age
{
get
{
return age;
}
set
{
age=value;
}
}

public string Name
{
get
{
return name;
}
set
{
name=value;
}
}

public override string ToString()
{
return String.Format("爷爷的名字是{0},年龄是{1}",Name,Age);
}
}

-------------------------------------------------------------------
Son.cs
-------------------------------------------------------------------
public class Son:GrandFather
{
public Son()
{
}

public override string ToString()
{
return String.Format("孙子的名字是{0},年龄是{1}",Name,Age);
}
}

------------------------------------------------------------------
MainClass.cs
------------------------------------------------------------------
public class MainClass
{
[STAThread]
public static void Main(string[] args)
{
Son son=new Son();
son.Age=20;
son.Name="孙子";
Console.WriteLine(son.ToString());
Console.ReadLine();
}
}

三个类的源代码如上,现有问题如下:
在MainClass.cs给Son的实例的Name或者Age属性赋值的时候,最后都会导致age或者name值发生变化,而这个值是private的,Son不能访问GrandFather的私有成员,实际上程序不会报错,请给出解释。
...全文
263 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
周公 2007-02-01
  • 打赏
  • 举报
回复
昨天晚上回去想了一下,同意syeerzy的看法。
liujia_0421 2007-01-31
  • 打赏
  • 举报
回复
TO:楼上错了,私有变量不会被继承~~`

私有成员是可以被继承的...
shen020453 2007-01-31
  • 打赏
  • 举报
回复
楼上讲的有道理。
syeerzy 2007-01-31
  • 打赏
  • 举报
回复
实际上当然不会报错,因为根本没有错,楼主漏掉一个关键字 "直接"
没有任何说"Son不能访问GrandFather的私有成员",是 "不能直接访问"

都已经通过一个public属性了,还怎么算是"直接" ?
Son访问public属性,public属性在GrandFather类内部访问私有成员,有什么不对?

如果间接访问都不行的话,那么私有私有的成员将不再有任何意义,因为对系统的任何其他部分,它都有和没有完全一样.
he_8134 2007-01-31
  • 打赏
  • 举报
回复
楼上错了,私有变量不会被继承~~`
jackyped 2007-01-31
  • 打赏
  • 举报
回复
从父类继承相当于把如下代码写到了子类

private int age;
private string name;


public int Age
{
get
{
return age;
}
set
{
age=value;
}
}

public string Name
{
get
{
return name;
}
set
{
name=value;
}
}

he_8134 2007-01-31
  • 打赏
  • 举报
回复
虽然私有变量不能继承,但是可以通过父类被继承的方法来调用~~~
属性实际上看成方法就是了~~这样有什么问题?

110,561

社区成员

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

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

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