swift簡單學習之類與物件

2021-07-10 13:03:13 字數 2283 閱讀 7378

使用 class 和類名來建立乙個類。類中屬性的宣告和常量、變數宣告一樣,唯一的區別就是它們的上下文是 類。同樣,方法和函式宣告也一樣。

class shape

} var shape = shape()

shape.numberofsides = 7

var shapedescription = shape.******description()

這個版本的 shape 類缺少了一些重要的東西:乙個建構函式來初始化類例項

。使用 init 來建立乙個構造器。

class namedshape

func ******description() -> string }

注意 self 被用來區別例項變數。當你建立例項的時候,像傳入函式引數一樣給類傳入構造器的引數。每個屬性都 需要賦值——無論是通過宣告(就像 numberofsides )還是通過構造器(就像 name )。

如果你需要在刪除物件之前進行一些清理工作,使用 deinit 建立乙個析構函式。

子類的定義方法是在它們的類名後面加上父類的名字,用冒號分割。建立類的時候並不需要乙個標準的根類,所

以你可以忽略父類。

子類如果要重寫父類的方法的話,需要用 override 標記——如果沒有新增 override 就重寫父類方法的話編譯器 會報錯。編譯器同樣會檢測 override 標記的方法是否確實在父類中。

class square: namedshape

func area() ->  double

override func ******description() -> string }

let test = square(sidelength: 5.2, name: "my test square")

test.area()

test.******description()

除了儲存簡單的屬性之外,屬性可以有 getter 和 setter 。

class equilateral********: namedshape

var perimeter: double

set }

override func ******description() -> string }

var ******** = equilateral********(sidelength: 3.1, name: "a ********")

print(********.perimeter)

********.perimeter = 9.9

print(********.sidelength)

在 perimeter 的 setter 中,新值的名字是 newvalue 。你可以在 set 之後顯式的設定乙個名字。 注意 equilateral******** 類的構造器執行了三步:

1. 設定子類宣告的屬性值

2. 呼叫父類的構造器

3. 改變父類定義的屬性值。其他的工作比如呼叫方法、getters和setters也可以在這個階段完成。

如果你不需要計算屬性,但是仍然需要在設定乙個新值之前或者之後執行**,使用 willset 和 didset 。 比如,下面的類確保三角形的邊長總是和正方形的邊長相同。

class ********andsquare }

var square: square

}init(size: double, name: string)

}var ********andsquare = ********andsquare(size: 10, name: "another test shape")

print(********andsquare.square.sidelength)

print(********andsquare.********.sidelength)

********andsquare.square = square(sidelength: 50, name: "larger square")

print(********andsquare.********.sidelength)

處理變數的可選值時,你可以在操作(比如方法、屬性和子指令碼)之前加 ? 。如果 ? 之前的值是 nil , ? 後面 的東西都會被忽略,並且整個表示式返回 nil 。否則, ? 之後的東西都會被執行。在這兩種情況下,整個表示式 的值也是乙個可選值。

let optionalsquare: square? = square(sidelength: 2.5, name: "optional square")

let sidelength = optionalsquare?.sidelength

C 學習之類與物件 二)

建構函式的作用 在物件被建立時使用特定的值構造物件,將物件初始化為乙個特定的初始狀態。例如 希望在構造乙個clock類物件時,將初始時間設為0 0 0,就可以通過建構函式來設定。1 函式名與類名相同 2 不能定義返回值型別,也不能有return語句 3 可以有形式引數,也可以沒有形式引數 4 可以是...

Swift學習之類和結構體

struct resolution class videomodel 結構體自動的提供了成員逐一構造器 let resolution resolution width 1,height 9 print resolution.width 1 結構體 列舉都是值型別,賦值的時候都會複製 指向的都不是同乙...

C 之類與物件

都說c 是乙個完全物件導向的語言,我 那天很自豪的也和我說了,好像這個語言很令人振奮。以前學習vb的時候總是感覺很吃力,因為自己對 基本根本沒有親和力,在以前如果給自己一大批 讓自己按著敲,那麼這個對於當時的我來說肯定是世界上最幸福的事情了。很喜歡安靜的敲 的感覺 現在越來越能體會到,是被人賦予靈魂...