Swift入門:class ( クラス , 継承, override )

 

クラスの基本と、継承を説明していきます。

クラスを覚えると、コード上に散らばってる変数(属性)や関数(機能)などを

オブジェクトとして定義できます。

 


クラスの定義、基本


 

class Animal {
var name: String

// 初期化処理
init(name: String) {
    self.name = name
}

func bark() -> String {
    return "something"
}

}

let animal = Animal(name: “”)
print(animal.bark()) // something


 


1〜11行目  例として、Animalクラスを定義しています


5行目 クラスが呼び出す際、一番はじめに初期化処理(init)が呼ばれます。


引数nameがあるので、名前を与える必要があります。


 


9行目 barkという関数があり、吠えさせることができます。


15行目 Animal(“”)で、名無しの動物が出来上がりました。(ここでinitが呼び出されます。)


16行目 barkを呼んで”something”と出力されます。


 


クラスの継承、override(上書き)


 

class Dog: Animal {

private var color: UIColor

init(color: UIColor, name: String) {
    self.color = color
    super.init(name: name)
}

func change(color:UIColor) {
    self.color = color
}

override func bark() -> String {
    return "わんわん"
}

deinit {
    print("remove \(name) \(color)")
}

}

var dog = Dog(color: .brownColor(), name: “max”)
dog.change(.yellowColor())
print(dog.bark())
dog = Dog(color: .blackColor(), name: “john”) // maxのdeinitが呼び出される


 


1行目〜21行目 Dog: Animal と定義ことによってAnimalクラスを継承しています。


3行目 Dogクラスの属性として、colorを定義しています。


5行目 initはAnimalクラスのinitと別ものです。


このinitにはnameとcolorを初期化処理時に与える必要があります。


 


7行目 super.initで親クラス(Animal)のinitが実行、nameを与えています。


Dogクラスは親クラス(Animal)の属性も持っています。


10行目 change関数で色を変更できます。


14行目 Animalクラスのbarkをoverrideで上書きしています。


18行目 Dogクラスが破棄された時に呼び出されます。


 


24行目 brownColorの色とmaxの名前のDogを変数dogに代入しています(インスタンス化)


25行目 変数dogのcolorをbrownColorからyellowColorに変更しています。


26行目 barkを呼び出し、わんわんと出力されます。


 


27行目 変数dogに新しいDogを代入しています。


  この時、deinitが呼ばれ、古いdogは破棄されます。


 


例えばドラクエでは…


 


ドラクエでいう職業クラスもクラスのひとつですね。



  • 職業が親クラス


  • 魔法使いや、勇者、商人などがサブクラス(子クラス)


のように定義できますね。


 


こういう風に考えれば面白くないですか?(笑


 

comments powered by Disqus