请问个关于c#的继承的问题

littlecc2009 2010-04-24 11:20:44
请问子类继承父类的私有变量吗??如果不继承,那子类继承父类的属性,而属性又return父类的私有变量,那岂不是矛盾吗??
...全文
109 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
littlecc2009 2010-04-24
  • 打赏
  • 举报
回复
谢谢大家了!!
ProjectDD 2010-04-24
  • 打赏
  • 举报
回复
这是规则但并不矛盾,

public class A{
int i;//private
protected int I{get{return this.i;}set{this.i=value;}}
}

public class B:A{
void M(){
base.i=0;//X
base.I=0;//OK
}
}

增加了一个间接层,让事情变得可选择,而富于变化。私有成员的存在保证了那些不期望暴露给外部甚至是其自身子类对象的设计得到实施,这个也算是一种基本设计需求吧。
我姓区不姓区 2010-04-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 littlecc2009 的回复:]
引用 1 楼 ojlovecd 的回复:
继承,只是无法访问而已

就是子类没法获取该私有变量的值, 但外部可以通过子类的属性获取?
[/Quote]
所谓的私有变量应该称为私有字段(field),类的私有成员只有类内部可以访问,要获取值就需要将其进行封装,不一定是属性,用方法也是可以的

class Parent
{
string str = "ojlovecd";

protected string Str
{
get { return str; }
}

protected string GetStr()
{
return str;
}
}

class Child : Parent
{
public void Print()
{
Console.WriteLine(Str);//两种获取方法
Console.WriteLine(GetStr());
}
}

wjx_111 2010-04-24
  • 打赏
  • 举报
回复
有点难度
wuyq11 2010-04-24
  • 打赏
  • 举报
回复
基类的所有成员(实例构造函数、析构函数和静态构造函数除外)都由派生类型继承。包括基类的私有成员。但是,私有成员的可访问域只包括声明该成员的类型的程序文本
threenewbee 2010-04-24
  • 打赏
  • 举报
回复
lz要明白,继承,是说,子类本身就是父类。
比如男人就是人,而不是男+人。

private限定了访问域而已。
littlecc2009 2010-04-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 ojlovecd 的回复:]
继承,只是无法访问而已
[/Quote]
就是子类没法获取该私有变量的值, 但外部可以通过子类的属性获取?
我姓区不姓区 2010-04-24
  • 打赏
  • 举报
回复
继承,只是无法访问而已

110,499

社区成员

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

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

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