Kotlinのdata classのコンストラクタについて現役エンジニアが解説【初心者向け】

初心者向けにKotlinのdata classのコンストラクタについて現役エンジニアが解説しています。dataクラスとは1まとまりのデータを管理することに特化したクラスです。プライマリコンストラクタとセカンダリコンストラクタなどdata classの書き方や使い方などを解説します。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

Kotlinのdata classのコンストラクタについて、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。

初心者向けにKotlinの入門向けサイトをまとめた記事もありますので読んでみてください。

なお本記事は、TechAcademyのオンラインブートキャンプ、Androidアプリ開発講座の内容をもとに作成しています。

田島悠介

今回は、Androidアプリ開発に関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

Kotlinのdata classのコンストラクタについて詳しく説明していくね!

大石ゆかり

お願いします!

 

目次

 

data classとは

アプリを作っていると「ニュースの一覧」や「ログインしているユーザーの情報」などのように、1まとまりの値を管理したい場面がでてきます。そのような場合に便利なのがデータクラス( data class )です。

data classはクラスの1種ですが、1まとまりのデータを管理することに特化しているため、簡潔にクラスの定義を行えることが特徴です。data classについて、詳しくは公式サイトも参考にしてください(英語)。

Kotlin – Data Class

[PR] Androidアプリの開発で挫折しない学習方法を動画で公開中

data classの書式

data classの書式は以下のとおりです。

data class クラス名(引数1, 引数2, ...)

引数にはvalまたはvarでプロパティ名と型を指定します。値を変更しない定数のプロパティの場合はvalを、値を変更する変数の場合はvarを指定します。

プライマリコンストラクタとセカンダリコンストラクタ

それでは実際にデータクラスを記述して確認しましょう。ソースコードの入力と実行はKotlin Playgroundで行います。

Kotlin Playground

ソースコードは以下のとおりです。

data class Person(val name:String, var age:Int = 0)

fun main() {
  val person = Person("Taro")
  // age は変数なので値を変更できる
  person.age = 26
  println(person.toString())
}

はじめにPersonというデータクラスを定義しています。クラス名の右側の(…) の部分をプライマリコンストラクタと呼びます。プライマリコンストラクタはクラスで1つだけ定義することができます。

それに対してclassブロックの中で複数定義できるコンストラクタをセカンダリコンストラクタと呼びます。data classの場合、プライマリコンストラクタの引数にはすべてvalまたはvarを付与してプロパティとして扱う必要があります。

プライマリコンストラクタの引数、すなわちプロパティは1つ以上の指定が必要です。プロパティには上記のageのように初期値が設定できます。また変数で定義したプロパティは後で値の変更が可能です。

ソースコードを入力したら実行結果を確認しましょう。実行結果は以下のとおりです。

Person(name=Taro, age=26)

単にdata classを定義しただけなのにインスタンスに対して「toString()」メソッドを使用することができます。

data classを定義するとtoString 以外にも以下のメソッドが自動的に作成されます。

  • equals:インスタンスが一致しているかの確認用
  • hashCode:〃
  • componentN:プロパティの参照
  • copy:インスタンスのコピー

 

まとめ

今回の記事ではdata classについて学習しました。

監修してくれたメンター

太田和樹(おおたかずき)

ITベンチャー企業のPM兼エンジニア。

普段は主に、Web系アプリケーション開発のプロジェクトマネージャーとプログラミング講師を行っている。守備範囲はフロントエンド、モバイル、サーバサイド、データサイエンティストと幅広い。その幅広い知見を生かして、複数の領域を組み合わせた新しい提案をするのが得意。

開発実績:画像認識技術を活用した駐車場混雑状況把握(実証実験)、音声認識を活用したヘルプデスク支援システム、Pepperを遠隔操作するアプリの開発、大規模基幹系システムの開発・導入マネジメント。

地方在住。仕事のほとんどをリモートオフィスで行う。通勤で消耗する代わりに趣味のDIYや家庭菜園、家族との時間を楽しんでいる。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でも最短4週間で、Kotlinの技術を使ってAndroidアプリ開発を習得できる、オンラインブートキャンプを開催しています。

また、現役エンジニアから学べる無料体験も実施しているので、ぜひ参加してみてください。