重写field的提前定义

//new一个子类的过程:子类构造函数调用父类构造函数,父类field初始化后,再初始化子类的

object Score extends App {
  class Student {
    val classNumber : Int = 10
    //classScores的初始化依赖于classNumber
    val classScores: Array[Int] = new Array[Int](classNumber)
	println("fu "+ classScores.length)
  }
/*  class PEStudent extends Student{
    override val classNumber: Int =3
  }

  val s = new Student
  s.classNumber //10
  println(s.classScores.length) //10
  //new PE先执行父类构造器(null构造器),再执行PE构造器(null),再执行函数体部分(field、函数初始化等)
  val p = new PEStudent //p.classNumber值为3 ,
  println(p.classScores.length) // 子类的classScore没有重写,值为0
  */

  //提前将classNumber指定为3
  class PEStudent extends {
    override val classNumber: Int = 3
  } with Student
  val s = new Student
  s.classNumber //10
  println(s.classScores.length) //10
  val p = new PEStudent //p.classNumber值为3 ,
  println(p.classScores.length) // 3
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值