Que problema existe con los contructores primarios?
Que problema existe con los contructores primarios?
Que problema existe con los contructores primarios?
Se pueden declarar e inicializar propiedades dentro del constructor primario o fuera de este pero nunca podemos dentro de los constructores secundarios o bloques init
Dime el orden de ejecucion:
fun main(args : Array) {
val David = Persona(“David”, 184)
}
class Persona(val name: String){
var alt : Int = -1 init {
alt += 10
}
constructor(name : String, altura: Int) : this(name) {
this.alt = altura
} }
Estamos en un caso con contructor primario y constructor secundario donde el constructor secundario debe siempre llamar al primario con this(lo que sea que pasamos por parametro). Cuando se crea objeto se podra llamar al cons primario o secundario
ORDEN
Entra al constructor secundario y llama al constructor primario
ejecuta constructor primario
ejecuta en orden descendente bloques init e inicializadores de propiedades(en este caso inicalizador alt y luego init)
Dime orden de ejecucion:
fun main(args : Array) {
val David = Persona(“David”, 184)
}
class Persona{
var alt : Int = -1
var name: String = "" init {
alt += 100
} constructor(name : String, altura: Int){
this.name = name
this.alt = altura
}
constructor(name : String){
this.name = name
}}
Estamos en el caso que no hay constructor primario y solo hay secundarios. Cuando se construya un objeto se llamara a uno de los dos.
ORDEN
Se llama al primer constructor secundario pero no se ejecuta lo de dentro
Se ejecuta en orden descendente los inicializadores de propiedades y los bloques init(en este caso inicializadores alt y name, despues init)
Por ultimo se ejecuta el bloque del constructor secundario
Cual es el objetivo primario de una clase abstracta?
La idea de una clase abstracta (clase padre) es que muchas clases hereden de esta una estructura comun:
Que son los members de una clase?
Se denominan members al conjunto de propiedades y metodos dentro de una clase
Por que no podemos crear objetos de un clase abstracta? 2 motivos
Ejemplo basico donde usar una clase abstracta
class company con metodos
CompanyDetails con los detalles de la compañia
EmployeesDetails abstracto
class Manager extiende de company con metodos
CompanyDetails que hereda de company no tocar
EmployeesDetails sobreescribimos para este
class Informatico extiende de company con metodos
CompanyDetails que hereda de company no tocar
EmployeesDetails sobreescribimos para este