看板 Flash 關於我們 聯絡資訊
某書上getter與setter範例 類別A: package { public class A { private var MyString:String="test"; public function get hello():String{ return MyString; } public function set hello(S:String):void{ MyString=S; } } } 類別B: package { import flash.display.Sprite; public class B extends Sprite { public function B(){ var foo:A=new A(); trace(foo.hello); } } } 我的問題在於類別B裡的var foo:A=new A(); 他這邊的new A()我有點不懂的是類別A裡面沒有建構函式,new A()是哪來的?? 而類別A沒有寫建構函式就直接get跟set,這邊觀念有點模糊= = 請各位高手指導解說!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.125.152.249
wind50321:沒寫跟有寫沒塞東西一樣 A是instance instance是class來 11/26 03:31
wind50321:通常建構函式是用來寫初始設定 而它只是需要一個A物件來 11/26 03:33
wind50321:使用其他function的功能 11/26 03:33
sayaku0210:原來如此!感謝您的解惑 11/26 03:37
aquarianboy:我其實看不太懂w版友的推文...s版友能幫忙解釋一下嗎? 11/26 05:16
aquarianboy:A明明是一個class,怎麼會變instance呢? 11/26 05:17
aquarianboy:在OOP的架構下,子類別沒寫的功能不代表就不能用,也 11/26 05:18
aquarianboy:許它的爸媽有遺傳給他,那他就可以直接用 11/26 05:19
aquarianboy:另外,有沒有建構函式跟getter/setter是兩件事 :) 11/26 05:20
etrexetrex:A是class foo是instance 11/26 08:07
wind50321:嗯 我寫錯了 我是要說A()是instance 11/26 10:20
wind50321:還有我沒考慮到遺傳的問題 我是認為它只是一個例子 11/26 10:24
wind50321:不過遺傳應該跟建構函式沒寫沒關係 通常是用外面的功能? 11/26 10:28
wind50321:而且A沒有extend任何class 11/26 10:29
aquarianboy:A即使沒有繼承自任何class,在編譯的時候還是偷偷塞一 11/26 11:44
aquarianboy:個類別給它繼承 11/26 11:45
wind50321:像是Object之類的嗎? 11/26 13:33
aquarianboy:抱歉正在上班中,晚上回家再來回一篇完整一點的 :) 11/26 15:17
sayaku0210:我這篇是拿getter跟setter範例當例子!所以不是要討論 11/26 16:28
sayaku0210:getter與setter! 11/26 16:29
sayaku0210:我的問題其實就是W板友說的寫不寫建構函式的問題!就是 11/26 16:31
sayaku0210:沒寫建構函式等於有寫建構函式但沒塞東西! 11/26 16:32
sayaku0210:我記得class預設都是繼承Object 11/26 16:34
sayaku0210:感謝W板友與A板友熱心的回答!!這方面概念還是沒有很熟! 11/26 16:38
sayaku0210:忘了還有E板友熱心的回答!感謝:) 11/26 16:39