Kotlin | Propiedades de clase y accesores personalizados

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *