LoginSignup
1
1

More than 5 years have passed since last update.

Kotlinでデータクラスを継承したいができないので他のやり方

Last updated at Posted at 2019-04-09

data classとは

KotlinにはJavaと違い、data classというものが存在する。
通常のクラスと違い、getter/setterが自動で生成されるようなイメージのもの
以下のように定義する。

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

利用するときは以下のようなイメージ

class main(){
  val myPerson = Person("hogehoge", 20, "東京都fugafuga") //  Person(name = "hogehoge", age = 20, address = "東京都fugafuga")という書き方も可
  val tmpName = myPerson.name 
  myPerson.address = "神奈川県piyopiyo"
}

尚上の例の場合は、name,ageはvalで定義しているため値の代入ができない。(Setterもない)
addressはvarで定義しているためSetterがあり、値の代入が可能。

data classの制限

Kotlinのdata classは他のクラスを継承することができない仕様になっている。
そのため、data classを継承して項目を追加するようなことができない。

解決方法(?)

data classは継承ができないため以下のような方法で解決する。

interface Person{
  val name: String
  val age: Int
  var address: String
}
data class ExtendPerson(
  override val name: String,
  override val age: Int,
  override var address: String = "",
  var tel: String? = null
):Person

若干不格好だけど、こんな感じで継承してプロパティの追加が可能。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1