Swift學習之路 物件和類

2021-07-08 11:22:53 字數 3114 閱讀 7807

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

class

shape

}

要建立乙個類的例項,在類名後面加上括號。使用點語法在訪問例項的屬性和方法

var shape = shape()

shape.numberofsides = 7

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

練習:使用let新增乙個常量屬性,再新增乙個接收乙個引數的方法

class

team

}var team = team()

var fruits = team.teamnumber(9)

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

class

numbershape

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

}var numbershape = numbershape(name: "unique")

print(numbershape.name)

numbershape.numberofsides = 7

numbershape.******description()

注意self是用來區分例項變數。當建立例項的時候,像傳入函式引數一樣也需要給構造器傳入引數

每個屬性都需要賦值 – 無論是通過宣告(就像numberofsides)還是通過構造器(就像name)

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

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

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

class square: numbershape 

func area() ->double

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

string

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

test.area()

test.******description()

練習:建立numbershape的另乙個子類circle,構造器接受兩個引數,乙個是半徑乙個是名字,在子類circle中實現area()和simpdescription()方法

class circle: numbershape 

func area() ->double

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

string

}let circle = circle(radius: 5, name: "半徑")

circle.area()

circle.******description()

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

class

equilaterl********: numbershape

var perimeter: double

set

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

}//swift會為每乙個屬性生成乙個get方法,乙個set方法,如果沒有寫的情況下,當然如果你寫了,那系統就會用你的 取值呼叫get 賦值呼叫set

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

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

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

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

注意:

equilaterl********類的構造器執行了三步:

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

2.呼叫父類的構造器

3.改變父類定義的屬性值,其他工作也在這一階段完成,例如:呼叫方法、getter、setter

如果你不需要計算屬性,但仍然需要在設定乙個新值之前或之後執行,可以使用willset和didset

比如,下面的類確保三角形的邊長總是和正方形的邊長相同

class ********andsquare 

}var square: square

}init(size: double,name: string)

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

print(triangeandsquare.square

.sidelength)

print(triangeandsquare.********

.sidelength)

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

print(triangeandsquare.********

.sidelength)

處理變數的可選值時,你可以在操作(方法、屬性、子指令碼)之前加?

如果?之前的值是nil,?後面的東西都會被忽略,並且整個表示式返回nil,否則,?之後的東西都會被執行

這兩種情況下,整個表示式的值都是乙個可選值

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

let sidelength = optionalsquare?.sidelength

swift的類和物件

1 類的關鍵字 是class。類裡面可以有常量,變數,和函式。成員變數 每個變數都要賦初值 class shape 生成乙個shape類的物件 相當於我們oc 中的 shape s shape alloc init 可以通過 去點到他們的例項變數和方法。var s shape print s的邊數為...

Swift 的類和物件

類的定義 類定義的關鍵字是class,我們用class 類名 父類,比如定義乙個person類,類中去宣告和定義變數和函式 class person nsobject 複製 類的擴充套件 extension person 複製 儲存屬性 儲存屬性就是儲存在類或者結構體乙個例項裡的乙個常量和變數,用v...

Swift2學習 Swift概覽4 物件和類

物件和類 使用class並在其後面跟著類名來建立乙個類。類中常量或者變數已同樣的方法宣告,除非他是類的上下文 類之外 同樣的,方法和類以同樣的方式宣告。class shape 練習 通過let新增乙個常量屬性,並新增另外乙個方法來使用這個引數。通過在類名之後放置一對圓括號來建立乙個類物件。通過小數點...