Por Lucas Trubiano - Data Engineer | Profesor y Consultor
En Scala, las clases son la base de la programación orientada a objetos. Puedes crear clases para modelar objetos y definir comportamientos. Las clases pueden tener atributos y métodos.
class Persona(nombre: String, edad: Int) {
def saludar(): Unit = {
println(s"Hola, mi nombre es $nombre y tengo $edad años.")
}
def saludar2 = println(s"Hola, mi nombre es $nombre y tengo $edad años.")
}
val persona = new Persona("Juan", 30)
persona.saludar()
private
, ni protected
, ni public
), el atributo será privado. Esto significa que solo es accesible dentro de la clase.private
antes del parámetro, el atributo resultante será privado y solo será accesible dentro de la clase que lo define.protected
antes del parámetro, el atributo será protegido y solo será accesible dentro de la clase que lo define y sus subclases.public
directamente en Scala, ya que el acceso por defecto es privado.val
antes del parámetro, el atributo será inmutable, lo que significa que no se puede cambiar después de la creación del objeto. Es similar a una constante.var
antes del parámetro, el atributo será mutable, lo que significa que su valor puede cambiarse después de la creación del objeto.Ejemplos:
Atributo privado e inmutable (por defecto):
class MiClase(nombre: String) {
// 'nombre' es privado e inmutable (val)
}
Atributo privado y mutable:
class MiClase(private var nombre: String) {
// 'nombre' es privado y mutable (var)
}
Atributo protegido e inmutable:
class MiClase(protected val nombre: String) {
// 'nombre' es protegido e inmutable (val)
}
Atributo público y mutable:
class MiClase(var nombre: String) {
// 'nombre' es público y mutable (var)
}
Atributo público e inmutable:
class MiClase(val nombre: String) {
// 'nombre' es público e inmutable (val)
}
En Scala, puedes definir propiedades con acceso y modificación controlados mediante los métodos get
y set
. Esto te permite encapsular la lógica de acceso y modificación de los atributos de la clase.
class Cuenta {
private var _saldo: Double = 0.0
def saldo: Double = _saldo
def depositar(monto: Double): Unit = {
_saldo += monto
}
def retirar(monto: Double): Unit = {
_saldo -= monto
}
}
val cuenta = new Cuenta
cuenta.depositar(100.0)
println(s"Saldo actual: ${cuenta.saldo}")
En Scala, puedes realizar importaciones en cualquier lugar dentro de tu código, no necesariamente al principio del archivo. Esto permite importar solo lo necesario en contextos específicos.
object MiApp {
def main(args: Array[String]): Unit = {
import java.util.Date
val fecha = new Date
println(fecha)
}
}