zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    webstorm
    数据库中的内连接和外连接
    JVM加载class文件的原理机制
    内部类
    getString()方法与getObject()方法的区别
    Class.forName的作用
    JDBC事务处理
    合并两个排序的链表
    链表中倒数第k个结点
    反转链表
  • 原文地址:https://www.cnblogs.com/kongzhagen/p/15135094.html
Copyright © 2011-2022 走看看