こんにちは😀
今回は、クラスの継承をみてみましょう。
継承とは、あるクラスの定義をもとに、新しいクラスを定義することです。
元のクラスの一部を書き換えたり、追加したりできます。
継承元のクラスを「スーパークラス」と呼び、そのスーパークラスを継承したクラスをサブクラスと呼びます。
まず、呼び元のスーパークラスを書いてみましょう。
継承として使用するには、そのクラスを「継承を許すクラス」にする必要があります。
継承を許すには、スーパークラスに「open」を追加します。
open class Present(val name:String, val present:String) {
fun givePresent() = “${name}の誕生日には、${present}をプレゼントしよう。”
}
次に、Presentクラスを継承するクラス(サブクラス)を作成します。
以下のGameクラスは「{}」がありませんが、Presentクラスを継承しているので、givePresent関数をそのまま使えます。
また、このGameクラスの引数に、valやvarを付けていません。
付けると引数のプロパティを作り直す処理になります。
ここでは、プロパティをそのまま使用したいのでvalやvarを付けません。
変数nameに値を渡すとスーパークラスのコンストラクタに渡されます。
また、変数presentには、文字列「人生ゲーム」が渡されます。
class Game(name:String):Present(name,”人生ゲーム”)
main関数に書きます。
3行目はスーパークラス、4行目はサブクラスを定義しています。
fun main(args: Array<String>) {
val present = Present(“太郎”,”万年筆”)
val game = Game(“次郎”)
println(present.givePresent())
println(game.givePresent())
}
実行します。
サブクラスの出力は、スーパークラスを元にしていることがわかります。
また、上記のサブクラスの引数の渡し方を変更します。
以下は、引数nameに文字列を追加しています。
class Game(name:String):Present(“2018年の”+name,”人生ゲーム”)
実行します。
追加した文字列が正常に出力されています。
継承は作成したクラスを再利用できるので使い方に工夫しがいがありますね。
今回はここまで🤚
では、また次回。