BOO入門/結構
外觀
< BOO入門
BOO入門 > 結構 (上一章:多型與繼承 下一章:命名空間)
結構與類別相比,最大的差別在於結構是值型別,而類別則是參考型別。這意味着當你回傳值或是設定值的時候,實際上是複製資料過去而不是複製參考。這很有用,因為宣告不給值的時候,並不會是 null,而一定會有個預設值,也因此無法與 null 作比較。這排除了很多與參考型別相關的錯誤檢查。
結構也無法繼承類別,也無法繼承結構。結構只能繼承介面。
與其它語言不同,結構可以有方法。
宣告結構
[編輯]宣告結構的方法與宣告類別非常相近,差別在於 class 被換成 struct 了。
// 宣告結構
struct Coordinate:
def constructor(x as int, y as int):
_x = x
_y = y
[property(x)]
_x as int
[property(y)]
_y as int
c as Coordinate
print c.x, c.y
c = Coordinate(3, 5)
print c,x, c.y
輸出結果
0 0 3 5
從例子裏,你能看到,結構實體化的時候,不需要呼叫建構子,就可以顯示其值。
練習
[編輯]- 加上方法:Print,讓結構本身可以印出內部的值。
- 宣告一個介面,看看結構能否繼承介面。