[問題] 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