クラス

SwiftにはC言語と同様にクラスが存在します。クラスは変数と関数をひとまとめにしたもので、オブジェクト指向のプログラミングに欠かせません。ここでは、Swiftにおけるクラスと構造体の使い方について解説します。

クラスとは

プログラミングしているとよく使用するもの(オブジェクト)が多く存在します。そして、これらのオブジェクトには変数と関数がそなわっています。例えば、ボタン機能はプログラムに欠かせません。そして、ボタンには大きさや色といった変数とボタンを押した際の動作という関数から成り立ちます。

このようによく存在するオブジェクトを毎回いちいち変数と関数を定義していたら面倒です。そこで、変数と関数をひとまとめにしたものがクラスや構造体という概念です。

クラスの定義と使い方

クラスの定義は以下のようにします。

class クラス名{
var プロパティ1
var プロパティ2

func メソッド1
func メソッド2

init
}

クラス内の変数と関数のことをそれぞれプロパティとメソッドといいます。そして、initは初期化関数ではじめに呼び出される関数です。終了処理がしたい場合はdeinitという関数を追加してください。では実際に使ってみます。

class cla{
    var x: Int
    var y: Int
    func sum()->Int{
        return x+y
    }
    init(){
        x=1
        y=2
    }
}

var a=cla()
print("\(a.x)+\(a.y)=\(a.sum())")

1+2=3

このクラスではxとyの2つの整数型プロパティがあります。初期化関数initによりそれぞれ1と2になります。そして、sum()というメソッドが存在し、xとyの和を出力します。

継承

いま、乗り物というクラスがあったとします。その後、車というクラスを作りたいとします。このとき、はじめから車というクラスを作ってもいいのですが、乗り物クラスに少し付け加えて車というクラスを作った方が簡単です。このようにクラスにあたらにプロパティなどを付け加え、新しいクラスをつくることを継承といいます。新しくつくるクラスをサブクラス、継承したクラスをスーパークラスといいます。継承は以下のように使用します。

class サブクラス名:スーパークラス名{
付け加えるプロパティやメソッドをかく
}

では、実際に継承を使ってみます。

class cla{
    var x: Int
    var y: Int
    func sum()->Int{
        return x+y
    }
    init(){
        x=1
        y=2
    }
}

class cla2:cla{
    var z: Int=3
    func show(){
        print("x=\(x),y=\(y),z=\(z)")
    }
    override func sum()->Int{
        return super.sum()+z
    }
}

var a=cla2()
a.show()
print("x+y+z=\(a.sum())")

x=1,y=2,z=3
x+y+z=6

スーパークラスclaではプロパティxとyと、それらの和を計算するメソッドsumがあります。一方、claのサブクラスcla2では、プロパティzとx,y,zの値を出力するメソッドshowが新たに追加されています。

また、cla2ではsumというメソッドがx,y,zの和を計算するためのものに修正されています。スーパークラスのメソッドを修正する際は「override」をメソッドにつけます。サブクラス内で修正されていないスーパークラスの関数を使いたい場合は「super.メソッド名」とします。

著者:安井 真人(やすい まさと)