Herencia y clase abstracta en Scala
Herencia: Es la propiedad que permite definir nuevas clases a partir de clases base ya existentes.
Las clases abstractas nos ayudan a representar objetos generales de un objeto,es decir, sus propiedades comunes. Como puede ser el nombre, el tamaño, el tipo, etc.
Las clases abstractas no pueden ser instanciadas. Solo las clases que extienden de ella.
En este ejemplo se define una clase base llamada Vehiculo y una clase hija llamada Moto. La clase Vehiculo tendra las siguientes características:
- marca
- tipo y
- color
[Sintaxis]
class ClaseHija extends ClaseBase{ ... }
Definimos la clase Vehiculo:
abstract class Vehiculo(val _marcax:String=null,val _tipox:String=null,val _colorx:String=null){
private var _marca:String=_marcax
private var _tipo:String=_tipox
private var _color:String=_colorx
//getter
def marca = _marca
//setter
def marca_= (value:String):Unit = _marca = value
def tipo=_tipo
def tipo_=(value:String):Unit=_tipo=value
def color=_color
def color_=(value:String):Unit=_color=value
def getInfo():String={"marca: "+_marca+" ,tipo: "+_tipo+" , color: "+_color}
}
Definimos la clase Moto:
class Moto(override val _marcax:String,override val _tipox:String,override val _colorx:String,val _tamanyox:String=null) extends Vehiculo(_marcax,_colorx,_tipox){
private var _tamanyo:String=_tamanyox
def tamanyo = _tamanyo
def tamanyo_= (value:String):Unit = _tamanyo = value
override def getInfo():String={super.getInfo+" ,tamaño: "+_tamanyo}
}
Como se puede ver esto es similar a Java. La clase base y la clase hija tendrán código en común. Por último creamos la instancia de la clase Moto:
object Codemonkey extends App{
val moto=new Moto("Toyota","rojo","sencilla","pequeña")
println(moto.getInfo)
}
Código: http://www.pasteall.org/47735/java