他クラスの「データ」・「処理」を引き継ぐ
こんにちは、徳です。
デジタルDIYができるようコーディング・プログラミング・画像加工・動画編集などを本やYouTubeで勉強しています。
現在は初心者なので、とにかくゆっくり進んでいくと思います。
また、「間違っていること」や「こうした方が良いよ」などがあれば、コメントなどしていただけたら幸いです。
では、いきましょう!
Swift
今回は、
クラスの継承
です。
Swiftのクラスには
継承
という概念があります。
継承とは、
クラスの中身の引き継ぎ
になります。
こちらを使うことで、同じ中身を何度も書く必要がなくなります。
それではよろしくお願いします。
クラスの継承
継承とは、他クラスの中身を引き継ぐ仕組み
クラスの継承とは、
他のクラスの「データ」「処理」を引き継ぐ仕組み
です。
クラスには、
プロパティ
メソッド
が入っています。
クラスによっては、同じものを使うこともあります。
その場合、
どちらにも共通するクラスを作成し、異なる内容の別々のクラスに継承する
ことで、書く内容を減らすことができます。
クラスについてはこちらで紹介しています
よろしかったらどうぞ
考え方
クラスの継承の目的の一つは、
クラスの拡張
です。
プログラムをしていると、
もとあったクラスに新しく付け足した別のクラスを作りたい
ということもあります。
その場合、もとあるクラスと同じ内容は継承し、
それ以外の「データ」や「処理」を指定したクラスをつくる
ことでクラスの拡張をすることができます。
その時、
元あったクラス
親クラス
拡張するクラス
子クラス
と言います。
書き方
クラスの継承
class クラス名 : 親クラス名{ var プロパティ名 : 型 func メソッド名(){ 処理文 } }
親クラスは定義してある状態からの書き方を紹介します。
この時、
クラス名は大文字から始める
のが慣習です。
実際は、小文字からでも定義はできます。
しかし、大文字から始めることで、他の人が見ても
これはクラス名なんだなと読みやすくなります。
イニシャライザの継承
コンストラクタも継承をする場合、ちょっと書き足す必要があります。
class クラス名 : 親クラス名{
required init(プロパティ名 : 型){
super.init(プロパティ名 : プロパティ名)
}
}
このように書くことで、親クラスのイニシャライザで指定したプロパティが子クラスにも継承されす。
親クラスにないプロパティを作りたいならいつも通りに書きましょう。
例
学生クラスを野球部・陸上部に継承する
class Student{
var name : String
init(name : String ){
self.name = name
}
func intro(){
print("名前は\(name)です。")
}
}
class Track : Student{
var res : String
required init(name : String , res : String){
self.res = res
super.init(name : name)
}
func resIntro(){
print("\(name)さんの専門種目は\(res)です。")
}
}
let Nori = Track(name : "徳" , res : "走り幅跳び")
Nori.intro()
Nori.resIntro()
まとめ
今回は、
クラスの継承
について紹介させていただきました。
クラスの継承とは、
すでに定義したクラスをもとに新しいクラスを定義する
ことです。
子クラスを定義するときに、
class 子クラス名 : 親クラス名
と書くことで親クラスのメソッドなどを子クラスでも使用することができます。
つまり、
継承することでコンストラクタなどで指定したものを再度定義せずに使用できる
ということです。
これにより、プログラムを少なくすることができますね。
同じ文をなるべく書かない様にするのがいいプログラムです。
最後まで読んでいただき、ありがとうございました。
コメント