Objetos y clase de Kotlin (con ejemplos)

En este artículo, se le presentará la programación orientada a objetos en Kotlin. Aprenderá qué es una clase, cómo crear objetos y usarlos en su programa.

Kotlin admite la programación funcional y orientada a objetos.

Kotlin admite características como funciones de orden superior, tipos de funciones y lambdas, lo que lo convierte en una excelente opción para trabajar en un estilo de programación funcional. Aprenderá sobre estos conceptos en capítulos posteriores. Este artículo se centrará en el estilo de programación orientado a objetos en Kotlin.

Programación orientada a objetos (OOP)

En el estilo de programación orientado a objetos, puede dividir un problema complejo en conjuntos más pequeños creando objetos.

Estos objetos comparten dos características:

  • estado
  • comportamiento

Tomemos algunos ejemplos:

  1. La lámpara es un objeto
    • Puede estar encendido o apagado.
    • Puedes turn ony turn offlámpara (comportamiento).
  2. La bicicleta es un objeto
    • Tiene estado actual de marcha, dos ruedas, número de marcha, etc.
    • Tiene comportamiento de frenado, aceleración, cambio de marcha, etc.

Aprenderá sobre las características detalladas de una programación orientada a objetos como: encapsulación de datos, herencia y polimorfismo a medida que avanzamos. Este artículo se centrará en los conceptos básicos para simplificar las cosas.

Lectura recomendada: ¿Qué es un objeto?

Clase Kotlin

Antes de crear objetos en Kotlin, debe definir una clase.

Una clase es un plano para el objeto.

Podemos pensar en la clase como un boceto (prototipo) de una casa. Contiene todos los detalles sobre los pisos, puertas, ventanas, etc. Basándonos en estas descripciones construimos la casa. La casa es el objeto.

Dado que se pueden hacer muchas casas a partir de la misma descripción, podemos crear muchos objetos a partir de una clase.

¿Cómo definir una clase en Kotlin?

Para definir una clase en Kotlin, classse usa la palabra clave:

 class ClassName (// propiedad // función miembro…) 

He aquí un ejemplo:

 class Lamp (// propiedad (miembro de datos) private var isOn: Boolean = false // función miembro fun turnOn () (isOn = true) // función miembro fun turnOff () (isOn = false))

Aquí, definimos una clase llamada Lámpara.

La clase tiene una propiedad isOn (definida de la misma manera que variable) y dos funciones miembro turnOn()y turnOff().

Lectura recomendada: funciones de Kotlin

En Kotlin, la propiedad debe inicializarse o declararse abstract( visite: Kotlin Abstract Class para obtener más información). En el ejemplo anterior, la propiedad isOn se inicializa en false.

Las clases, objetos, propiedades, función miembro, etc. pueden tener modificadores de visibilidad. Por ejemplo, la propiedad isOn es privada. Esto significa que la propiedad isOn se puede cambiar solo desde dentro de la clase Lamp.

Otros modificadores de visibilidad son:

  • private - visible (se puede acceder) solo desde el interior de la clase.
  • public - visible en todas partes.
  • protected - visible para la clase y su subclase.
  • internal - cualquier cliente dentro del módulo puede acceder a ellos.

Usted aprenderá acerca protectedy internalmodificadores más tarde en Kotlin modificadores de visibilidad artículo.

Si no especifica el modificador de visibilidad, será publicpor defecto.

En el programa anterior, las funciones miembro turnOn()y turnOff()son public, mientras que la propiedad isOn es privada.

Objetos de Kotlin

Cuando se define la clase, solo se define la especificación del objeto; no se asigna memoria ni almacenamiento.

Para acceder a los miembros definidos dentro de la clase, necesita crear objetos. Creemos objetos de la clase Lamp.

 class Lamp ( // property (data member) private var isOn: Boolean = false // member function fun turnOn() ( isOn = true ) // member function fun turnOff() ( isOn = false ) ) fun main(args: Array) ( val l1 = Lamp() // create l1 object of Lamp class val l2 = Lamp() // create l2 object of Lamp class )

Este programa crea dos objetos l1 y l2 de clase Lamp. La propiedad isOn para las lámparas l1 y l2 será false.

¿Cómo acceder a los miembros?

Puede acceder a las propiedades y funciones miembro de una clase utilizando la .notación. Por ejemplo,

 l1.turnOn ()

Esta declaración llama a la función turnOn () para el objeto l1.

Tomemos otro ejemplo:

 l2.isOn = verdadero

Here, we tried to assign true to isOn property of l2 object. Note that, isOn property is private, and if you try to access isOn from outside the class, an exception is thrown.

Example: Kotlin Class and Object

 class Lamp ( // property (data member) private var isOn: Boolean = false // member function fun turnOn() ( isOn = true ) // member function fun turnOff() ( isOn = false ) fun displayLightStatus(lamp: String) ( if (isOn == true) println("$lamp lamp is on.") else println("$lamp lamp is off.") ) ) fun main(args: Array) ( val l1 = Lamp() // create l1 object of Lamp class val l2 = Lamp() // create l2 object of Lamp class l1.turnOn() l2.turnOff() l1.displayLightStatus("l1") l2.displayLightStatus("l2") )

When you run the program, the output will be:

 l1 Lamp is on. l2 Lamp is off.

In the above program,

  • Lamp class is created.
  • The class has a property isOn and three member functions turnOn(), turnOff() and displayLightStatus().
  • Two objects l1 and l2 of Lamp class are created in the main() function.
  • Here, turnOn() function is called using l1 object: l1.turnOn(). This method sets isOn instance variable of l1 object to true.
  • And, turnOff() function is called using l2 object: l1.turnOff(). This method sets isOff instance variable of l2 object to false.
  • Luego, displayLightStatus()se llama a la función para los objetos l1 y l2 que imprime el mensaje apropiado dependiendo de si la propiedad isOn es verdadera o false.

Observe que la propiedad isOn se inicializa falsedentro de la clase. Cuando se crea un objeto de la clase, la propiedad isOn del objeto se inicializa falseautomáticamente. Por lo tanto, no es necesario que el objeto l2 llame turnOff()para establecer la propiedad isOn en false.

Por ejemplo:

 class Lamp ( // property (data member) private var isOn: Boolean = false // member function fun turnOn() ( isOn = true ) // member function fun turnOff() ( isOn = false ) fun displayLightStatus() ( if (isOn == true) println("lamp is on.") else println("lamp is off.") ) ) fun main(args: Array) ( val lamp = Lamp() lamp.displayLightStatus() ) 

Cuando ejecute el programa, la salida será:

 la lámpara está apagada.

Este artículo es solo una introducción a la programación orientada a objetos en Kotlin. Consulte estos capítulos en secuencia para obtener más información:

  • Constructores e inicializadores de Kotlin
  • Kotlin esta palabra clave
  • Clase anidada de Kotlin

Articulos interesantes...