首页 > 其他 > 详细

寒假学习日报(四十)——继承知识补充

时间:2021-02-18 23:18:25      阅读:28      评论:0      收藏:0      [点我收藏+]

  今天补一下scala的继承知识。

package com.chapter01.extendsabout

object abstractabout {
  def main(args: Array[String]): Unit = {
    val n = new Sub_ABS
    n.cry()
    println("n.name=" + n.name + "\t n.age=" + n.age)
    //匿名子类
    val m = new ABS {
      override var name: String = "k"

      override def cry(): Unit = {
        println("cry匿名子类")
      }
    }
    m.cry()
    m.smile()
    println("m.name=" + m.name + "\t m.age=" + m.age)
  }
}

//抽象字段:没有初始化的字段
//当类含有抽象属性时,需要标注abstract,因为scala中类的属性必须初始化,否则会报错
abstract class ABS {
  //底层不会生成name属性,而是生成name和name_$eq方法
  var name: String  //抽象
  val age: Int = 10 //普通属性
  var num: Int = 0  //普通属性

  def cry() //抽象方法
  def smile(): Unit ={
    println("smile实现方法")
  }
}

class Sub_ABS extends ABS{
  //此处是重写抽象属性,本质上实现了抽象方法,因此override可省略
  var name: String = "SUB"
  //非抽象属性则必须声明override
  override val age: Int = 20
  //var变量使用override重写时,代码段不会报错,但运行时会抛出错误
  //override var num: Int = 2
  //***因此var变量重写必须使用抽象方法

  //override可省略
  def cry(): Unit = {
    println("cry抽象方法")
  }
}

技术分享图片

 

 在家的学习效率真不算高,慢慢来吧。要稳住心态才行。

寒假学习日报(四十)——继承知识补充

原文:https://www.cnblogs.com/20183711PYD/p/14413324.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!