Propiedades abstractas de Scala y métodos abstractos

        Scala no solo tiene el concepto de métodos abstractos, sino también el concepto de propiedades abstractas.
        Atributo abstracto : Un atributo que se declara sin valor inicial.
        Método abstracto : un método se declara sin un cuerpo de método.

        Las clases abstractas pueden tener no solo propiedades abstractas y métodos abstractos, sino también propiedades no abstractas y métodos no abstractos.

object Scala01_Abstract {
    
    
  def main(args: Array[String]): Unit = {
    
    
    val stu = new Student01
    println(stu.name)
    println(stu.age)
    stu.sleep()
    stu.eat()
  }
}

// 抽象类中既可以有抽象属性和抽象方法,也可以有非抽象属性和非抽象方法
abstract class Person01 {
    
    
  // 抽象属性,声明却不赋值
  var name: String

  // 抽象方法,声明却没有方法体
  def eat(): Unit

  // 非抽象属性
  val age: Int = 18

  // 非抽象方法
  def sleep() {
    
    
    println("Person sleep")
  }
}

// 子类继承抽象类
class Student01 extends Person01 {
    
    
  // 重写抽象属性和抽象方法,可以不加override
  var name: String = "Li Ming"

  def eat(): Unit = {
    
    
    println("Student eat")
  }

  // 重写非抽象属性和非抽象方法,必须加override
  // 重写的非抽象属性必须是由val修饰的
  override val age: Int = 21

  override def sleep(): Unit = {
    
    
    println("Student sleep")
  }
}

Nota:

  • Cuando una subclase anula el método abstracto y la propiedad abstracta de la clase principal, se puede omitir la palabra clave anular .
  • Cuando la subclase reemplaza los métodos no abstractos y las propiedades no abstractas de la clase principal, la palabra clave override no se puede omitir .
  • Cuando una subclase anula un atributo no abstracto, el atributo debe decorarse con val.

Supongo que te gusta

Origin blog.csdn.net/FlatTiger/article/details/114522973
Recomendado
Clasificación