• Scala基础:类和构造器


    package com.zy.scala.cls
    
    /**
      * 在 Scala 中,类并不用声明为 public 类型的。
      * Scala 源文件中可以包含多个类,所有这些类都具有共有可见性。
      */
    class Person {
      //用 val 修饰的变量是可读属性,有 getter 但没有 setter(相当与 Java 中用 final 修饰的变量)
      val id = "9527"
      //用 var 修饰的变量都既有 getter,又有 setter
      var age: Int = 18
      //类私有字段,只能在类的内部使用或者伴生对象中访问
      private var name: String = "唐伯虎"
      //类私有字段,访问权限更加严格的,该字段在当前类中被访问
      //在伴生对象里面也不可以访问
      private[this] var pet = "小强"
    }
    
    //伴生对象(这个名字和类名相同,叫伴生对象)
    object Person {
      def main(args: Array[String]): Unit = {
        val p = new Person
        //如果是下面的修改,发现下面有红线,说明 val 类型的不支持重新赋值,但是可以获取到值
        //p.id = "123"
        println(p.id)
        //打印 age
        println(p.age)
        //打印 name,伴生对象中可以在访问 private 变量
        println(p.name)
        //由于 pet 字段用 private[this]修饰,伴生对象中访问不到 pet 变量
        //p.pet(访问不到)
      }
    }

    构造器

    package com.zy.scala.cls
    
    /**
      * 每个类都有主构造器,主构造器的参数直接放置类名后面,与类交织在一起
      */
    class Student(val name: String, var age: Int) {
      //主构造器会执行类定义的所有语句
      println("执行主构造器")
      private var gender = "male"
    
      def this(name: String, age: Int, gender: String) {
        //每个辅助构造器执行必须以主构造器或者其他辅助构造器的调用开始
        this(name, age)
        println("执行辅助构造器")
        this.gender = gender
      }
    }
    
    object Student {
      def main(args: Array[String]): Unit = {
        val s1 = new Student("zhangsan", 20)
        val s2 = new Student("zhangsan", 20, "female")
      }
    }
  • 相关阅读:
    echarts仪表盘如何设置图例(legend)
    js上传限制文件大小
    js下载文件及命名(兼容多浏览器)
    为什么每个浏览器都有Mozilla字样(转载于知乎shadow)
    用JS做一个简单的电商产品放大镜功能
    unity下跨平台excel读写
    无限大地图:lightmap拆分
    Unity 打包总结和资源的优化和处理
    Unity3d: 资源释放时存储空间不足引发的思考和遇到的问题
    profiler内存优化:警惕回调函数
  • 原文地址:https://www.cnblogs.com/blazeZzz/p/9794248.html
Copyright © 2020-2023  润新知