カテゴリ: Kotlin 更新日: 2025/08/11

Kotlinのクラス拡張を完全マスター!拡張関数と拡張プロパティの使い方を初心者向けに解説

Kotlinのクラスの拡張(拡張関数・拡張プロパティ)を活用しよう
Kotlinのクラスの拡張(拡張関数・拡張プロパティ)を活用しよう

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

生徒

「Kotlinには『拡張関数』とか『拡張プロパティ』ってあるらしいんですけど、それって何ですか?」

先生

「いい質問ですね。Kotlinでは、元のクラスの中身を変えずに、新しい機能を追加できる仕組みがあるんですよ。それが『クラスの拡張』です。」

生徒

「クラスをそのまま変えないで機能追加? 難しそうだけど便利そう!」

先生

「初心者でも簡単に使えるテクニックなので、実際に使いながら覚えていきましょう!」

1. 拡張関数とは?Kotlinでメソッドを追加する方法

1. 拡張関数とは?Kotlinでメソッドを追加する方法
1. 拡張関数とは?Kotlinでメソッドを追加する方法

拡張関数(extension function)とは、既存のクラスに新しい関数を追加できるKotlinの機能です。元のクラスを変更しなくても、新しい機能を外から追加できます。

たとえば、String型に「びっくりマークを付ける」機能を足したい場合は、次のように書きます。


fun String.addExclamation(): String {
    return this + "!"
}

これで、普通の文字列に対して次のように呼び出せます。


fun main() {
    val message = "こんにちは"
    println(message.addExclamation())
}

こんにちは!

2. thisの意味とは?初心者でも理解できる説明

2. thisの意味とは?初心者でも理解できる説明
2. thisの意味とは?初心者でも理解できる説明

thisは「このクラス自身」を指す特別なキーワードです。上の例でいうと、thisStringの中身、「こんにちは」を表しています。

拡張関数を書くときは、fun クラス名.関数名()という書き方で定義し、thisで元の値を参照できます。

3. 拡張プロパティとは?値を追加できる便利な方法

3. 拡張プロパティとは?値を追加できる便利な方法
3. 拡張プロパティとは?値を追加できる便利な方法

拡張プロパティ(extension property)は、クラスに新しいプロパティ(値)を追加する機能です。ただし、値を保持することはできないので、基本的にはget()だけを使います。


val String.firstChar: Char
    get() = this[0]

この例では、文字列の先頭の文字を返すプロパティを追加しています。


fun main() {
    val word = "Kotlin"
    println(word.firstChar)
}

K

4. 拡張関数とメンバー関数の優先順位

4. 拡張関数とメンバー関数の優先順位
4. 拡張関数とメンバー関数の優先順位

実は、同じ名前の関数が元のクラスにある場合、拡張関数よりも元のメンバー関数が優先されます。つまり、上書きはできません。

この点を理解しておくと、予期せぬ動作を防げます。

5. 拡張関数と拡張プロパティの活用例

5. 拡張関数と拡張プロパティの活用例
5. 拡張関数と拡張プロパティの活用例

Kotlinの拡張機能は、日常のプログラムでもよく使われます。例えば:

  • 日時クラスにフォーマット関数を追加
  • Listの合計や平均を求める関数
  • 文字列の加工やチェック処理

クラスの設計を変えずに、あとから機能を「足していく」感覚で使えるので、初心者にもとても扱いやすいテクニックです。

6. Kotlin標準ライブラリにも使われている

6. Kotlin標準ライブラリにも使われている
6. Kotlin標準ライブラリにも使われている

実はKotlinの標準関数の多くも、この拡張関数として実装されています。たとえば:


val list = listOf(1, 2, 3)
println(list.joinToString())

このjoinToString()も、Listに定義された拡張関数です。

こういった便利な書き方ができるのは、Kotlinの拡張のおかげなんです。

関連記事:
カテゴリの一覧へ
新着記事
Go言語の構造体でインターフェースを実装する方法を初心者向けにやさしく解説!
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説
Go言語の文字列フォーマット!fmt.Sprintfで簡単に出力を整形する方法
Go言語のエラーと例外の違いを初心者向けに整理!わかりやすく解説
人気記事
No.1
Kotlin・Go・Swift記事の人気No1
Swiftのwhile文とrepeat while文を完全マスター!初心者にもわかる繰り返し処理の使い方と違い
No.2
Kotlin・Go・Swift記事の人気No2
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.3
Kotlin・Go・Swift記事の人気No3
Swift入門ガイド|基本構文と書き方をマスターしよう
No.4
Kotlin・Go・Swift記事の人気No4
Kotlinの正規表現(Regex)の使い方をやさしく解説!文字列操作の基本を初心者向けに学ぼう
No.5
Kotlin・Go・Swift記事の人気No5
Kotlinのコンパニオンオブジェクトとは?初心者向けに使い方と役割をわかりやすく解説!
No.6
Kotlin・Go・Swift記事の人気No6
Kotlinで画面を作る!レイアウトXMLとビューの基本操作をやさしく解説
No.7
Kotlin・Go・Swift記事の人気No7
Kotlinのwhen式を完全ガイド!初心者でもわかるパターンマッチング的な使い方
No.8
Kotlin・Go・Swift記事の人気No8
Swiftのオプショナル型とは?初心者でもわかる使い方とアンラップの基礎