scala之被保护对象的访问

在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

posted on 2021-08-12 22:03  孔扎根  阅读(66)  评论(0编辑  收藏  举报

导航