1. Conceptos abstracción de datos¶
Pregunta¶
¿Que es una clase abstracta?
¿Que es un trait?
¿Como se incluyen?
Despacho dinámico de métodos
Notes¶
Es una clase donde NO se definen métodos ni campos
No se puede instanciar, puede ser hija de otras clases
Definimos el QUE y no el COMO
abstract class Nombre {
def a ...
def b ...
def metodo(...)
}
Es analogo a una interfaz en Java
Es una plantilla que NO hereda de otras clases
No se puede instanciar directamente
Puede tener implementación o no tenerla
trait Nombre {
def a
def b = 5
def metodo1()
def metodo2() .... bla bla bla...
}
class A extends B with C with D
....
//Recordar definir lo que no está implementado
/*
B puede ser clase o trait
C, D deben ser trait
*/
Se ejecuta un método, pero en tiempo de ejecución se determina la clase sobre la cual va ser ejecutado
abstract class B {
def metodo() ...
}
class A extends B {
def metodo() ... this.?
}
class C extends B {
def metodo() ... this.?
}
object Main {
def main(args:Array[String]) {
val x = new A()
x.metodo() //Puede psar que se ejecute en A o ejecute n C
}
}