Object expressions and declarations Flashcards
Existe alguna forma de crear una instancia unica de una clase, que forma y caracteristicas tiene?
Podemos declarar una clase object
esta sera de tipo singleton, es decir una unica instancia de dicho objeto. Este no puede tener constructor(obvio, no queremos construir varios objetos de dicha clase) y puede tener todo tipo de miembros dentro
```kotlin
object SingletonExample {
private var name = “”
var edad = 22
fun nombrar() : String { name = "David" return name } }
fun main() { val nombre = SingletonExample.nombrar() println(SingletonExample.edad) // println(nombre) //David }
~~~
A parte del singleton cual es la otra funcionalidad que ofrece object?
Cuando queremos declarar objetos muy especificos que son modificaciones de otra clase y heredan de esta. Una peculiaridad es que si heredan de una clase con constructor este debe recibir los parametros necesarios para su inicializacion
```kotlin
open class Animal(zoo: String, ciudad: String){
init{ println("Estamos en el Zoo $zoo de $ciudad") }
open fun velocidad() = println("Corro a 100km/h") //Hacemos las funciones open para que puedan ser sobrrescritas open fun patas() = println("Tengo 4 patas") open fun tipo() = println("Soy oviparo") } fun main(){ val gato = object: Animal("Wild Animals", "Madrid"){ override fun tipo() = println("Soy mamifero") }
gato.velocidad() gato.patas() gato.tipo() } ~~~