Classes Flashcards
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:
- Propiedades y metodos no abstractos que seran comunes para todos los hijos
- Propiedades y metodos abstractos (usar abstract) que seran sobreescritos (usar override) en cada hijo para que se comporten de manera especifica para cada hijo
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
- Si creamos objetos de una clase abstracta que posee metodos abstractos, es decir sin body, si llamasemos a estos metodos desde dicho objeto ¿Que pasaria?
- Las clases abstractas son plantillas que se usan para crear nuevas clases mas facilmente y estas plantillas no son concretas, y un objeto debe ser concretos
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