#Son varios conceptos que confundís (
1 messages · Page 1 of 1 (latest)
Lo primero es como definimos el SmartDevice.
En esta captura podes ver como tengo esa clase la cual tiene 4 parametros (name, cateogry, state, type).
Pero solo 2 estan en el constructor inicial (name y category).
Siguiendo tu ejemplo le implemento un constructor secundario donde se pasa solamente el name (Por estar definido en el constrcutor original de la clase) y otro param nuevo llamado some_var.
El detalle importante acá es que fijate como en el constructor secundario el this (name = name) no me pide el category. Esto se debe a que lo tengo configurado en la clase como nulleable e inicializado en null.
Ahora implemento la clase SmartTV la cual hereda de SmartDevice. Lo importante acá es que este SmarTV implementa inicialmente el constructor secundario de SmartDevice y a su vez implementa un segundo constructor en si mismo.
El detalle importante acá es que en el constructor secundario NO puedo saltearme el tener que pasar los params name y state ya que estos estan definidos en el constructor original de SarmtTV y el cual a su vez esta forzado por estar heredadndo de SmartDevice de que le tenga que pasar esas dos variables (Qué SmartDevice conoce como name y some_var)
Hey @honest forge, ¡has avanzando al nivel 2! 
No conozco porqué es que queres hacer ese tipo de implementación de aplicar un segundo constructor sobre un segundo constructor de la clase de la que heredas pero bueno, gusto colores. Y más en la programación.
Una opción que me gusta más para esa implementación es que lo hagas directamente todo en la misma definición de la clase. Como en esta imagen.
Por ultimo, por su quedaban dudas. Aunque en estos ejemplos estamos haciendo uso del segundo constructor de SmartDevice, nada te impide usar también el constructor principal e implementar una extención de este. Como en esta imagen.
Espero te sea de ayuda. Acá te dejo la clase entera para que le puedas hacer c&p y puedas probar más en detalle.
open class SmartDevice(var name: String, var category: String? = null) {
var state: String = "ON"
var type: String = "TIPO"
constructor(name: String, some_var: String) : this (name = name){
// TODO()
}
fun turnNn() {
state = "ON"
}
fun turnOFF() {
state = "OFF"
}
}
class SmartTV (name: String, state: String) : SmartDevice(name = name, some_var = state) {
constructor(name: String, state: String, codCountry: Int) : this(name = name, state = state)
}
class SmartLight (name: String, state: String, codCountry: Int) : SmartDevice(name = name, some_var = state)
class AnotherSmartLight (name: String, state: String, codCountry: Int) : SmartDevice(name = name, category = state)
Muy buenas tardes, buen hombre. En verdad quería hacer esta implementación para explorar un poco más allá de los conocimientos que explicaban en el curso de Android Developer, pero viendo el código después de explicármelo tu, veo que es una práctica un poco sin sentido, sólo vale para complicarme la vida