La idea básica y más importante de una clase es la Encapsulación . Es una propiedad para encapsular código y datos en una sola entidad. En Java, los datos se almacenan en los campos y estos son en su mayoría privados. Por lo tanto, se proporcionan métodos de acceso: se proporciona un getter y un setter para permitir que los clientes de la clase dada accedan a los datos. Para enviar notificaciones sobre el cambio o validar el valor pasado, la lógica adicional también está presente en el setter.
Propiedad
Es la combinación de accesorios y los campos en el caso de Java. En el caso de Kotlin, las propiedades están destinadas a ser una característica de lenguaje de primera clase. Estas funciones reemplazan los campos y los métodos de acceso. Una propiedad en una clase se declara igual que declarar una variable con las palabras clave val y var . Una propiedad declarada como var es mutable y, por lo tanto, se puede cambiar.
Definición de una clase:
Kotlin
class Abc( val name: String, val ispassed : Boolean )
Propiedad legible: genera un campo y un getter trivial
. Propiedad grabable: un getter, un setter y un campo.
Básicamente, lo que sucede es que la declaración de la propiedad declara los accesores relacionados (tanto setter como getter para propiedades de escritura y getter para propiedades de lectura). Un campo almacena el valor.
Veamos el uso de la clase.
Kotlin
class Abc( val name: String, val ispassed : Boolean ) fun main(args: Array<String>) { val abc = Abc("Bob",true) println(abc.name) println(abc.ispassed) /* In Java Abc abc = new Abc("Bob",true); System.out.println(person.getName()); System.out.println(person.isMarried()); */ }
Producción:
Bob true
En Kotlin, se puede llamar al constructor sin una nueva palabra clave. En lugar de invocar al captador, se hace referencia directa a la propiedad. La lógica sigue siendo la misma y el código es mucho más conciso. Los setters de propiedad mutable funcionan de manera similar.
Accesores del cliente
Implementación personalizada del descriptor de acceso a la propiedad.
Kotlin
class Rectangle(val height: Int, val width: Int) { val isSquare: Boolean get() { return height == width } } fun main(args: Array<String>) { val rectangle = Rectangle(41, 43) println(rectangle.isSquare) }
Producción:
false
La propiedad isSquare no necesita ningún campo para almacenar el valor. Solo tiene un captador personalizado con la implementación proporcionada. Cada vez que se accede a la propiedad, se calcula el valor.
Publicación traducida automáticamente
Artículo escrito por mathemagic y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA