各位论坛上朋友,下面的代码是网上的例子,是演示代码嵌套的。代码如下:问题写在代码的旁边了,希望各位朋友能发表一下,一解自己心中的疑团。另外,其实代码的嵌套、包含,共享和继承,在实际的编程中是为了减少代码量,提高可读性,请问有没有相关例子,可以提供学习一下,以加深自己的理解,谢谢!!!
public partial class _Default : System.Web.UI.Page
{
public class aaa
{
private string val1;
public aaa(string str)
{val1 = str; }
public string Val1
{
get
{ return val1; }
set
{ val1 = value; }
}
}
public class bbb
{
private aaa bval1;
//问题1:这里定义了一个私有变量,那么这个“bval1”是不是既是aaa类的私有变量,也同时是bbb类的私有变量呢?正常来说,用了private定义的变量,是只限此类使用 ,但这个私有变量是属于aaa类的,但却在bbb类进行定义,它究竟可以被谁调用?这样定义有什么作用,目的是什么?
public bbb()
{
}
public aaa Bval1
//问题2:这个“Bval1”的属性是不是只属于aaa类的?另外,将aaa类的公共属性放在bbb类里面定义,这样又有什么好处,目的是什么?
{
get
{ return bval1; }
set
{ bval1 = value; }
}
}
protected void Page_Load(object sender, EventArgs e)
{
bbb bb = new bbb();
bb.Bval1 = new aaa("dsdsdcs");
//问题3:这个属性为什么要这样进行赋值?这句该怎样理解?
Response.Write(bb.Bval1.Val1);
//问题4:这句又是什么意思,该怎样理解。自己用F11跟踪过,程序会先跳到Bval1这个属性,执行return bval1;然后再跳到Val1这个属性,执行return val1;的。}
}
public partial class _Default : System.Web.UI.Page
{
public class aaa
{
private string val1;
public aaa(string str)
{val1 = str; }
public string Val1
{
get
{ return val1; }
set
{ val1 = value; }
}
}
public class bbb
{
private aaa bval1;
//问题1:这里定义了一个私有变量,那么这个“bval1”是不是既是aaa类的私有变量,也同时是bbb类的私有变量呢?正常来说,用了private定义的变量,是只限此类使用 ,但这个私有变量是属于aaa类的,但却在bbb类进行定义,它究竟可以被谁调用?这样定义有什么作用,目的是什么?
public bbb()
{
}
public aaa Bval1
//问题2:这个“Bval1”的属性是不是只属于aaa类的?另外,将aaa类的公共属性放在bbb类里面定义,这样又有什么好处,目的是什么?
{
get
{ return bval1; }
set
{ bval1 = value; }
}
}
protected void Page_Load(object sender, EventArgs e)
{
bbb bb = new bbb();
bb.Bval1 = new aaa("dsdsdcs");
//问题3:这个属性为什么要这样进行赋值?这句该怎样理解?
Response.Write(bb.Bval1.Val1);
//问题4:这句又是什么意思,该怎样理解。自己用F11跟踪过,程序会先跳到Bval1这个属性,执行return bval1;然后再跳到Val1这个属性,执行return val1;的。}
}
这句话只是在bbb中声明了一个类型为aaa的局部变量bval1public aaa Bval1
这句话只是在bbb中声明了一个类型为aaa的属性bval1楼主好好看看基础的语法吧~~~~
如果想学C#,可以看看C#高级编程第四版,如果口袋比较空,看看中国人写的一本"c#2.0程序设计"(清华大学出版社,黄皮的.好像是郑宇泽写的),也还可以
public aaa Bval1
{
get
{ return bval1; }
set
{ bval1 = value; }
}
这是一个公有属性.是C#提倡是一种书写方式:即,定义的变量都是私有的,然后提供一个公有的属性.有点类似java中bean类
这个就是普通的类回答下列问题:
问题1:这里定义了一个私有变量,那么这个“bval1”是不是既是aaa类的私有变量,也同时是bbb类的私有变量呢?这个只是bbb类的私有变量,和aaa类无关,只是aaa的类型而已问题2:这个“Bval1”的属性是不是只属于aaa类的?另外,将aaa类的公共属性放在bbb类里面定义,这样又有什么好处,目的是什么?
这个property 不属于aaa类,只属于bbb类,因为你在上面定义了private aaa bval1;
所以为了让外部能访问,公开一个property问题3:这个属性为什么要这样进行赋值?这句该怎样理解?
当然这么赋值拉,因为要个aaa类的对象呀。bval1是aaa类的对象!!!问题4:这句又是什么意思,该怎样理解。自己用F11跟踪过,程序会先跳到Bval1这个属性,执行return bval1;然后再跳到Val1这个属性,执行return val1;的。
因为bval1是aaa类的对象,所以它有val1的私有成员变量。
问题2:当然这么赋值拉,因为要个aaa类的对象呀。bval1是aaa类的对象!!!
是不是可以换成这种写法:aaa 实例=new aaa(参数) 然后: bb.Bval1 =实例问题3:因为bval1是aaa类的对象,所以它有val1的私有成员变量。
能不能再详细一点解释一下,还是不是很懂!
衷心的谢谢!
是不是可以换成这种写法:aaa 实例=new aaa(参数) 然后: bb.Bval1 =实例可以问题3:因为bval1是aaa类的对象,所以它有val1的私有成员变量。
能不能再详细一点解释一下,还是不是很懂!怎么解释哪,bb.Bval1.Val1。 这个是property, 调用的是get{}里面的东西,所以自然会引导过去。你先解决下面几个概念:
1。什么是类? 类可以看作是一种声明
2。什么是对象。 光声明没有用,你要实例化它
3。对象里面有什么? 对象里面只有成员变量的空间,比如aaa对象,里面的只有val1所站的空间。
但问题3还是存在一点疑问
bb.Bval1.Val1,要返回BBB类的属性,直接bb.Bval1不就行了?为什么一定要加上Val1呢?干马要引导过去啊?希望再次赐教,谢谢!!!
public aaa Bval1
{
get
{ return bval1; }
set
{ bval1 = value; }
}
}
{ return bval1; }
注意大小写区分我不是说了嘛,c#简化了,property在其他语言里面是这样的getBavl1(){...}
bb.Bval1.Val1
在c++/java中的翻译是bb.getBavl1().getVal1();
这样看得懂了嘛?