Android
 Computer >> コンピューター >  >> プログラミング >> Android

Kotlinでデータクラスを拡張する


データクラスは、アプリケーションのデータを保持するクラスです。これは、データを保持するためにJavaで使用するPOJOクラスのようなものです。

Javaでは、データクラスについて、 getterを作成する必要があります およびセッター そのクラスのプロパティにアクセスするためのメソッド。 Kotlinでは、クラスがデータクラスとして宣言されると、コンパイラはクラスのメンバー変数にアクセスするために必要ないくつかのサポートメソッドを自動的に作成します。コンパイラはゲッターを作成します およびセッター コンストラクターパラメーターの場合、 hashCode()、equals()、toString()、copy()。

Kotlinでデータクラスと見なされるクラスの場合、次の条件を満たす必要があります-

  • プライマリコンストラクタには、少なくとも1つのパラメータが必要です。

  • すべてのプライマリコンストラクタパラメータは、 valとしてマークする必要があります またはvar

  • データクラスを抽象的、オープン、封印にすることはできません または内部。

データクラスを拡張することはできませんが、同じ機能を実装するために、スーパークラスを宣言できます。 サブクラスのプロパティを上書きします

次の例では、「Student」と「Book」の2つのデータクラスを作成します。また、抽象クラス「Resource」を作成します。 「Book」内で、「Resource」クラスのプロパティをオーバーライドします。

data class Student(val name: String, val age: Int)

fun main(args: Array) {
   val stu = Student("Student1", 29)
   val stu2 = Student("Student2", 30)
   println("Student1 Name is: ${stu.name}")
   println("Student1 Age is: ${stu.age}")
   println("Student2 Name is: ${stu2.name}")
   println("Student2 Age is: ${stu2.age}")
   val b=Book(1L,"India","123222") // implementing abstract class
   println(b.location)
}

// declaring super class
abstract class Resource {
   abstract var id: Long
   abstract var location: String
}

// override the properties of the Resource class
data class Book (
   override var id: Long = 0,
   override var location: String = "",
   var isbn: String
) : Resource()

出力

次の出力が生成されます-

Student1 Name is: Student1
Student1 Age is: 29
Student2 Name is: Student2
Student2 Age is: 30
India

  1. C#のコンソールクラス

    C#のConsoleクラスは、コンソールアプリケーションの標準の入力、出力、およびエラーストリームを表すために使用されます。 C#のコンソールクラスプロパティの例をいくつか見てみましょう- Console.CursorLeftプロパティ C#でコンソールのCursorLeftを変更するには、Console.CursorLeftプロパティを使用します。 例 例を見てみましょう- using System; class Demo {    public static void Main (string[] args) {       Cons

  2. 列挙型はJavaの任意のクラスを拡張できますか?

    Javaの列挙(enum)は、定数値のセットを格納するデータ型です。列挙型を使用して、1週間の日数、1年の月数などの固定値を格納できます。 キーワードenumの後に列挙型の名前を-として使用して、列挙型を定義できます。 enum Days {    SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY } 配列と同様に、列挙型の要素/定数は、上記の例では0から始まる番号を使用して識別されます。日は、次の図に示すように番号を使用して識別されます- 列挙型はクラスに似ており、変数、メソッド、コン