[问题] Static 使用观念询问

楼主: redonizuka (R大)   2014-01-18 21:41:25
class TotalArea
{
private static double total ;
public TotalArea(Area c)
{
total += c.area();
Console.WriteLine("本卡片面积为{0},目前累计面积为{1}", c.area(),
total);
}
}
上面是我练习时所作的类别
我从我的Main去呼叫这类别取算出我的面积
这面积是累加的
所以我定义一个Total
但我想询问关于定义的这一行
private static double total ;
当我把Static 移除时改为 private double total ;
为什么我的面积就没累加了?
我从书上自学的观念是 Static 是属于类别的
可以直接使用类别.名称不用在建立新物件
在类别内使用Static就如同宣告全域变量
故当我把Static移除时 他就变成区域便数
使得每跑一次类别就重新宣告一次
想问我这方面的观念是否正确
感谢
作者: andymai (人生只有一次)   2014-01-18 22:31:00
把static移除后~要用时不是就会变成 new TotalArea 这样吗?既然都是新的物件了~又怎会有之前的资料~"重新宣告"这个说法~应该不太对...
作者: KanoLoa (卡)   2014-01-19 00:02:00
本来公共使用的黑板,变成每人一块的小黑板
楼主: redonizuka (R大)   2014-01-19 00:33:00
抱歉 能再稍微说细一点吗? 自我看书学 有些想更了解
作者: GoalBased (Artificail Intelligence)   2014-01-19 07:50:00
http://ppt.cc/WvhI观念上是没有错
作者: steve1012 (steve)   2014-01-19 11:34:00
static 就是静态的 只初始化一次 所以你每跑一次类别他就不会重新宣告一次就像r大讲的static 就是一个大黑板 每个成员都可以用她
作者: FNRLV (斩碎梦一般的未来)   2014-01-19 12:34:00
以C的角度的话 static 是静态 意思是这个"名字"的变量宣告完之后就被固定在RAM中 只能被宣告一次外部要使用就必须使用extern让compliar知道要去哪个位址存取至于改成double之后 就是跟着你的class走 属于你的class成员就好像...水母很多人都有 但是姓马的台湾水母只有一只(大误
作者: andymai (人生只有一次)   2014-01-19 14:48:00
之所以说"重新宣告"不太对~是因为TotalArea t;这样是宣告t是TotalArea类别~而new TotalArea是在配置TotalArea物件内存了~与其说是"重新宣告"~倒不如说是"重新配置物件"
作者: GoalBased (Artificail Intelligence)   2014-01-19 14:50:00
重新宣告这个词有点怪 因为每次你进入那个fun都是一个新的东西所以也就没有"重新"的感觉

Links booklink

Contact Us: admin [ a t ] ucptt.com