Computer >> 컴퓨터 >  >> 프로그램 작성 >> Android

Kotlin에서 데이터 클래스 확장

<시간/>

데이터 클래스는 애플리케이션에 대한 데이터를 보유하는 클래스입니다. 데이터를 유지하기 위해 Java에서 사용하는 POJO 클래스와 같습니다.

Java에서 데이터 클래스에 대해 getter를 만들어야 합니다. 및 세터 해당 클래스의 속성에 접근하기 위한 메소드. Kotlin에서 클래스가 데이터 클래스로 선언되면 컴파일러는 클래스의 멤버 변수에 액세스하는 데 필요한 일부 지원 메서드를 자동으로 생성합니다. 컴파일러는 게터를 생성합니다. 및 세터 생성자 매개변수의 경우 hashCode(), equals(), toString(), copy()

Kotlin에서 클래스를 데이터 클래스로 간주하려면 다음 조건이 충족되어야 합니다. -

  • 기본 생성자에는 하나 이상의 매개변수가 있어야 합니다.

  • 모든 기본 생성자 매개변수는 val로 표시해야 합니다. 또는 var .

  • 데이터 클래스는 추상, 개방, 봉인일 수 없습니다. 또는 내부

데이터 클래스를 확장할 수는 없지만 동일한 기능을 구현하기 위해 수퍼 클래스를 선언할 수 있습니다. 하위 클래스의 속성을 재정의합니다.

예시

다음 예에서는 "Student"와 "Book"이라는 두 개의 데이터 클래스를 생성합니다. 우리는 또한 추상 클래스 "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