在scala语言中, 子类中使用super只能调用父类的方法, 不能调用其它任何属性
子类不能访问父类中的私有字段, 被 保护的字段及普通字段可以访问。
package cn.qianfeng object demo_par { def main(args: Array[String]): Unit = { val f1 = new F1("方程式赛车",12,5) // 子类的name,传入的age f1.show } } class Car{ // 父类 private var name:String = "比亚迪" protected var age:Int = _ var leg:Int = 3 def this(name:String,age:Int){ this this.name = name this.age = age } def show: Unit ={ println(s"name=${name}, age=${age}, leg=${leg}") } } class F1 extends Car{ // 子类 // override val leg: Int = 4 // 子类中重写父类字段 var name:String = _ private var color:String = _ def this(name:String,age:Int, leg:Int){ this this.name = name // 子类不能访问父类中的私有变量 this.age = age // 子类优先调用子类的变量 this.leg = leg // 父类中的leg在此被修改 } override def show: Unit = { // 重写父类的方法 super.show // super调用父类的方法, 父类中的leg字段被修改,从3-->5 // println(super.leg) // 子类中supper 只能调用父类的函数, 其它均不能调用 // println(s"name=${name}, age=${age}, leg=${leg}") } }
运行结果 :
name=比亚迪, age=12, leg=5
name=方程式赛车, age=12, leg=5