カテゴリ: Kotlin 更新日: 2026/02/11

Kotlinのthis・superキーワードとは?意味と使い分けを初心者向けにわかりやすく解説

Kotlinのthis・superキーワードの意味と使い分け例
Kotlinのthis・superキーワードの意味と使い分け例

先生と生徒の会話形式で理解しよう

生徒

「Kotlinでthissuperって出てきたんですが、何に使うんですか?」

先生

「いい質問です。thisは『自分自身』、superは『親クラスの機能』を使うときに使います。具体例を見てみましょう!」

生徒

「親クラスとか、自分自身って、どう区別するんですか?」

先生

「それでは、順番に説明をしていきますね。」

1. thisキーワードとは?自分を指す言葉

1. thisキーワードとは?自分を指す言葉
1. thisキーワードとは?自分を指す言葉

thisは、「いま動いている自分自身のインスタンス」を指す特別なキーワードです。Kotlinでは自分のプロパティや関数にアクセスするとき、多くの場合はthisを省略できますが、はっきり示したいときや読みやすさを上げたいときにthisを書きます。初心者の方は「this=このオブジェクト」と覚えると迷いません。

まずは最小の例で、プロパティ参照とメソッド呼び出しの両方を確認してみましょう。


class Person(val name: String) {
    fun greet() {
        // 自分のプロパティへアクセス(thisは省略可能)
        println("こんにちは、" + this.name + "さん!")
        // 自分の別メソッドを呼び出す(明示すると読みやすい)
        this.showSignature()
    }
    fun showSignature() {
        println("(発信者: " + this.name + ")")
    }
}

fun main() {
    val person = Person("太郎")
    person.greet()
}

こんにちは、太郎さん!
(発信者: 太郎)

上の例では、this.nameが「自分のnameプロパティ」を指し、this.showSignature()で「自分のメソッド」を呼び出しています。thisを付けることで、「いま参照しているのは自分の中身」だと読み手に伝えやすくなります。Kotlinの基本として、クラス内でthisは常に現在のインスタンスを表す、という点をまず押さえておきましょう。

2. thisを使う理由は?名前のあいまいさを避けるため

2. thisを使う理由は?名前のあいまいさを避けるため
2. thisを使う理由は?名前のあいまいさを避けるため

thisは「自分のプロパティ」と「関数の引数やローカル変数」が同じ名前になったときに力を発揮します。Kotlinのクラス設計では、引数名=プロパティ名とすることが多く、そのまま書くとどちらを指しているのか読み手に伝わりにくくなります。そこでthis.プロパティ名と明示して、「自分のフィールドを更新している」ことをはっきり示します。


class Person(val name: String) {
    var greeting = ""

    fun updateGreeting(name: String) {
        // 左は自分のプロパティ、右は引数の name
        this.greeting = "こんにちは、" + name + "さん(本当は" + this.name + ")"
    }
}

上の例では、nameだけだと「引数のname」を指します。一方で、this.nameは「Personが持つnameプロパティ」を意味します。こうして書き分けることで、Kotlin初心者でも処理の意図を追いやすくなります。

つぎは、よくあるつまずきです。プロパティに代入したいのに、同名の引数に代入してしまい、何も起きないパターンです。


// よくある間違い
class Title(var text: String) {
    fun rename(text: String) {
        text = text        // 右も左も引数の text を見ている(プロパティは変化しない)
    }
}

// 正しくは this を付けて、左側がプロパティだと明示する
class Title2(var text: String) {
    fun rename(text: String) {
        this.text = text   // 自分の text プロパティに、引数 text の値を代入
    }
}

thisを付けるだけで、「左=自分のプロパティ」「右=引数」という関係が明確になります。コンストラクタやセッター風メソッド、フォーム入力の反映など、Kotlinで値を受け取って状態を更新する場面では定番の書き方です。

書き方のコツ(読みやすさアップ)
  • thisは省略可能でも、同名の変数が登場する場所では付けると読み手に親切。
  • 「プロパティに代入する行」ではthis.プロパティ名 = 引数名の形に統一すると、Kotlinコードが安定して理解しやすくなる。
  • ローカル変数名に迷ったら、newTextinputTextなど少し変えるとthisの出番を減らせる。

3. superキーワードとは?親クラスを指す言葉

3. superキーワードとは?親クラスを指す言葉
3. superキーワードとは?親クラスを指す言葉

superは、「親(スーパークラス)の機能にアクセスする」ためのキーワードです。たとえば、親クラスの関数を呼び出したいときに使います。


open class Animal {
    open fun sound() = println("いきものの音")
}

class Dog : Animal() {
    override fun sound() {
        super.sound()
        println("ワンワン!")
    }
}

fun main() {
    Dog().sound()
}

いきものの音
ワンワン!

この場合、super.sound()によって親の処理を呼び出し、その後自分の処理を追加しています。

4. thisとsuperの違い

4. thisとsuperの違い
4. thisとsuperの違い
  • this=そのクラス自身(自分)
  • super=親クラス(スーパークラス)

この違いをイメージするには、家族の会話のように考えると分かりやすいです。thisは自分、superは親の意見や動作を受け継ぐときに使います。

5. Kotlin初心者が使ってみたい実践例

5. Kotlin初心者が使ってみたい実践例
5. Kotlin初心者が使ってみたい実践例

たとえば次のような例では、thissuperの使い分けが自然です:


open class Vehicle(val name: String) {
    open fun move() = println("${name}が進みます")
}

class Car(name: String) : Vehicle(name) {
    override fun move() {
        super.move()
        println("${this.name}(車)が走行中")
    }
}

super.move()で親の動きを呼び出し、追加処理として「車が走行中」と出します。

6. 使い分けのポイント:いつthis?いつsuper?

6. 使い分けのポイント:いつthis?いつsuper?
6. 使い分けのポイント:いつthis?いつsuper?
  • this=自分のプロパティや関数、引数と混同されやすい変数名のとき
  • super=親クラスの処理を残しつつ、自分の処理を追加したいとき

この使い分けを覚えると、継承やインスタンスのコードがとても読みやすくなります。

まとめ

まとめ
まとめ

Kotlinのthissuperは、オブジェクト指向プログラミングにおけるとても大切なキーワードです。thisは「自分自身」、superは「親クラス」を指す言葉であり、どちらもクラスや継承を使った開発で頻繁に登場します。 初心者にとっては、コードを読んでいると突然現れるこれらの単語に戸惑うかもしれません。しかし、基本的な使い方を覚えれば、コードの見通しもぐんと良くなり、保守もしやすくなります。

thisの使いどころ

自分のクラスのプロパティや関数を明示的に指すとき、特に関数の引数とプロパティ名が同じになっているときは、thisを使うことで誤解を防ぐことができます。これにより、意図した処理が正しく行われ、コードの可読性も向上します。

superの役割とは?

superは、親クラスに定義された関数やプロパティを呼び出すときに使います。Kotlinでは継承がサポートされており、親クラスの振る舞いを引き継ぎつつ、自分のクラスで上書き(オーバーライド)するケースも多くあります。そのとき、親の処理を呼んでから自分の処理を足すという場面でsuperは非常に便利です。

実際に書いて試してみよう

ここでthissuperの使い方を同時に使った簡単なサンプルを見てみましょう。


open class Animal(val type: String) {
    open fun introduce() {
        println("私は${type}です。")
    }
}

class Cat(type: String, val name: String) : Animal(type) {
    override fun introduce() {
        super.introduce()  // 親クラスのintroduce()を呼ぶ
        println("私の名前は${this.name}です。")  // 自分のプロパティにアクセス
    }
}

fun main() {
    val cat = Cat("ネコ", "ミケ")
    cat.introduce()
}

私はネコです。
私の名前はミケです。

上記の例では、super.introduce()で親のメッセージを出し、this.nameで自分のプロパティにアクセスしています。こうすることで、継承関係を意識した柔軟なコードが書けるようになります。

今後のKotlin学習にもつながる知識

今回紹介したthissuperは、Kotlinだけでなく、Javaや他のオブジェクト指向言語でも基本となる概念です。特にAndroidアプリ開発では、これらを活用する機会がとても多いため、早い段階で慣れておくと、実践的なコードも理解しやすくなります。

また、Kotlinではラムダ式やインナークラスなどの場面でもthissuperが使われることがあるため、今回の内容を土台にして、さらに応用的なテーマへと理解を広げていけます。

先生と生徒の振り返り会話

生徒

「thisは『自分』で、superは『親』っていうのがやっと分かってきました!」

先生

「その調子です。関数の中でthisを使えば、自分のプロパティと引数を区別できますし、superは親クラスの処理を引き継ぐのに使えますよ。」

生徒

「Catクラスでsuperとthisを両方使うの、ちょっと感動しました。親の機能も使えて、子どもとして名前も言えるって感じがしました!」

先生

「まさにその通りです。これがクラスの継承やオブジェクト指向の基本ですから、今後いろんな場面で出てくるのでしっかり使い慣れていきましょうね。」

Kotlinを基礎からしっかり学びたい人や、 Java経験を活かしてモダンな言語にステップアップしたい人には、 定番の入門書がこちらです。

基礎からわかるKotlinをAmazonで見る

※ Amazon広告リンク

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Kotlinのthisとは具体的に何を指しているのですか?

Kotlinで使うthisキーワードは、「自分自身のインスタンス」を指します。つまり、今まさに動いているクラスやオブジェクトそのものを示す特別な言葉です。
関連セミナーのご案内

【未経験OK】Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験する60分

「プログラミングを始めたい」を形にする。最新言語Kotlinで楽しむ、ものづくりの第一歩。

本講座は、プログラミング経験が全くない方のためのエントリー講座です。「コードを書くってどういうこと?」という基本から、世界中で使われている最新言語Kotlin(コトリン)を使って、実際にプログラムを動かすまでを体験します。難しい理屈よりも、まずは「自分の手で動かす楽しさ」を最短距離で実感していただきます。

具体的な体験内容と環境

【つくるもの】
簡単な言葉を入力すると自動で返答してくれる「対話型ミニプログラム」や、計算を自動化する「便利ツール」をゼロから作成します。黒い画面に自分の書いた文字が表示される瞬間は、最高の感動体験です。

【開発環境】
プロのエンジニアが実際に使っている開発ツールIntelliJ IDEA(インテリジェイ)をインストールします。ボタン一つで日本語化し、初心者でも迷わず操作できる「魔法の設定」を一緒に行います。

この60分で得られる3つの体験

1. 自分のパソコンが「開発基地」に

プロと同じ道具を揃えることで、明日から一人でもプログラミングを続けられる環境が整います。

2. プログラミングの「仕組み」がスッキリ

「変数」や「型」といった難しい言葉も、身近な例え話で解説。モヤモヤをゼロにします。

3. 「読みやすい」から「直せる」へ

Kotlinは英語に近くて読みやすいのが特徴。自分でコードを読んで、間違いを見つけるコツも伝授します。

※本講座は、パソコン操作が不安な方でも安心して受講いただける完全マンツーマンです。あなたのペースに合わせて、一つずつ丁寧に進めていきます。

セミナー画像

Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験

理解度のクイズ問題

理解度のクイズ
この記事の理解度をクイズで確認しよう

空欄の★に当てはまる内容を答えてください。

問題
Kotlinにおける継承の場面では、親クラスの処理を引き継ぎつつ、子クラスで独自の処理を追加したいケースがあります。 そのような場合、子クラス内で親の関数を明示的に呼び出すには super を使います。 また、引数とプロパティ名が重複するような場合に、自分自身のプロパティを参照したいときは this を使うことで、混同を避けることができます。 この2つは、Kotlinのクラス設計やオーバーライドの理解において基本となるキーワードです。
open class Animal(val name: String) {
    open fun speak() {
        println("${name}が鳴いています")
    }
}

class Cat(name: String) : Animal(name) {
    override fun speak() {
        super.speak()
        println("${this.name}はニャーと鳴きます")
    }
}
【ヒント】 ・superは親クラスの関数やプロパティを使いたいとき。 ・thisは自身のプロパティや関数を明示したいときに使う。 ・関連キーワード:Kotlin 基本文法、継承、オーバーライド、クラス設計、初心者、親子関係、インスタンスメソッド。

下記をクリックすると、解答が表示されます
関連記事:
カテゴリの一覧へ
新着記事
New1
Go言語
Go言語のwhile的なforループの使い方!条件式ループの基本を解説
New2
Go言語
Go言語プログラムの実行方法まとめ!VSCode・ターミナルでの実行手順を解説
New3
Swift
Swift意味とは?プログラミング言語・金融・鳥の違いを徹底解説
New4
Swift
Swift 戻り値の扱い方と複数戻り値の返し方|初心者でも分かる関数の基本
人気記事
No.1
Java&Spring記事人気No1
Go言語
Go言語でリダイレクト処理を行う方法(http.Redirect)を初心者向けに解説
No.2
Java&Spring記事人気No2
Swift
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.3
Java&Spring記事人気No3
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.4
Java&Spring記事人気No4
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.5
Java&Spring記事人気No5
Go言語
Go言語のgo.modファイル完全ガイド!初心者でもわかる仕組みと書き方
No.6
Java&Spring記事人気No6
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.7
Java&Spring記事人気No7
Kotlin
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説
No.8
Java&Spring記事人気No8
Go言語
Go言語で条件式を1行で書くコツ!三項演算子の代替と短縮記法