Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Start Developing iOS Apps.Classes and Initializers

More than 5 years have passed since last update.

Classes and Initializers

オブジェクト指向プログラミングにおいてプログラムの動作は主に、オブジェクト同士の相互作用に基づいています。
クラスとはそのオブジェクトの設計図と考える事が出来ます。
クラスは、プロパティとメソッドを使用してその動作を定義します。

Swiftでのクラスの生成方法

クラスで定義する定数と変数 => プロパティ
クラスで定義する関数 => メソッド


class Shape {
    var numberOfSides = 0
    func simpleDescription() -> String {
        return "A sahpe with \(numberOfSides) sides."
    }
}

Swiftでのインスタンス(クラス(設計図)の実体)の生成方法

あるクラスのインスタンスを生成する場合、classの名前の後に()を置く
そしてその値をローカル変数shapeに代入する事で、ローカル変数shapeはShapeクラスにメソッドを扱う事が出来る。

var shape = Shape() //インスタンスの生成

shape.numberOfSides = 7 // 変数numberOfShapesに7の値を代入している。

var shapeDescription = shape.simpleDescription() //インスタンス変数shapeを介して、simpleDescriptionメソッドを変数shapeDescriptionに代入している。

Shapeクラスの初期化に関して

初期化はinitという特別なメソッドで構造体とクラスでの初期化の為に使用します。
インスタンス生成時に必ず呼ばれるメソッドです。

class NamedShape {
    var numberOfSides = 0

    var name: String

    init(name: Stirng) {
        self.name = name  /現在のオブジェクトを表す。
    }

    func simpleDescription() -> String {
        return "A shape with \(numberOfSides) sides"
    }

}

"継承" あるクラスをもとに別のクラスを生成する事

super class = 親クラス
sub class = 子クラス

・子クラスは親クラスで定義されたプロパティ、メソッドをすべて扱う
・親クラスのメソッドをOverride(上書き)出来る
・Override自体を禁止出来る => 親クラスメソッドの前にfinalをつける。
・親クラスのメソッド、プロパティを呼び出す事が出来る。=> superを使う

スーパクラス(親クラス)の記述法

URL http://gawao.hateblo.jp/entry/2015/03/25/002018

class サブクラス: スーパークラス {
    //サブクラスで新たにプロパティとメソッドを定義する
}
class Square: NamesShape {
    var sideLength: double

    init(sideLength: Double, name: String) {
        self.sideLength = sideLength
        super.init(name: name)
        numberOfSides = 4

    }

    func area() -> Double {
        return sideLength * sideLength
    }

    override func simpleDescription() -> String {
        return "A square with sides of length \(sideLength)."
    }
}

let testSquare = Square(sidelength: 5.2, name: "my test square")
testSquare.area()
testSquare.simpleDescription()

Squareクラスを初期化する時とは違う3つの点が存在する。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away