zoukankan      html  css  js  c++  java
  • 寒假学习日报(三十八)

      今日学习:scala,英语

    暂定内容,后续可能会有补充

    scala类中的构造器运用:

    package com.chapter01.classabout
    
    object ConDemo01 {
      def main(args: Array[String]): Unit = {
        val p1 = new ConPerson("abc", 20)
        println(p1)
        println("================================")
        val p2 = new ConPerson("GOGOGO")
        println(p2)
        println("================================")
        val p3 = new ConA
        println("================================")
        //执行顺序为父类,子类非函数部分,子类辅助构造器部分
        val p4 = new ConA("K")
      }
    }
    
    //主构造器将非函数部分全部执行
    class ConPerson(inName: String, inAge: Int) {
      var name: String = inName
      var age: Int = inAge
    
      //重写toString
      override def toString: String = {
        "name=" + this.name + "	 age=" + this.age
      }
    
      //辅助构造器
      def this(tname: String) {
        //第一行必须显式调用主构造器。
        this("null",0)
        this.name = tname
      }
    
      println("构造")
    }
    
    class ConB{
      println("ConB")
    }
    
    class ConA extends ConB{
      println("ConA()")
      def this(name:String){
        //之所以先显式调用主构造器,是为了保持与父类的联系,否则在调用辅助构造器时与ConB的关系会断掉,不符合逻辑
        this
        //super()会报错,辅助构造器中不允许直接调用父类
        println("ConA this")
      }
    }

    package com.chapter01.classabout
    
    object ConDemo02 {
      def main(args: Array[String]): Unit = {
        val p1 = new Con2Person("KI")
        p1.showInfo()
      }
    }
    
    //主构造器私有化,此时只能通过辅助构造器来进行构造
    class Con2Person private(){
      var name: String = _
      var age: Int = _
    
      //辅助构造器无论是直接还是间接,必须在第一行调用主构造器
      def this(name: String) {
        //直接调用
        this()
        this.name = name
      }
    
      //辅助构造器私有化
      private def this(name: String, age: Int) {
        //直接调用
        this()
        this.name = name
        this.age = age
      }
    
      def this(age: Int) {
        //间接调用:这里调用的是第一个辅助构造器:def this(name: String),其中调用了主构造器
        this("null")
        this.age = age
      }
    
      def showInfo(): Unit = {
        println("Person信息如下")
        println("name=" + this.name)
        println("age=" + this.age)
      }
    }

    package com.chapter01.classabout
    
    object ConDemo03 {
      def main(args: Array[String]): Unit = {
        val w1 = new Worker("GO1")
        println(w1.name)
        val w2 = new Worker2("GO2")
        println("inName=" + w2.inName + "	 name=" + w2.name)
        val w3 = new Worker3("GO3")
        w3.inName = "Change3"
        println("inName=" + w3.inName + "	 name=" + w3.name)
      }
    }
    //主构造器是(inName:String),inName就是局部变量
    class Worker(inName:String){
      var name = inName
    }
    //若使用val修饰,那么inName是Worker2的一个private的只读属性
    class Worker2(val inName: String){
      var name = inName
    }
    //若使用var修饰,那么inName是Worker2的一个private的可读写属性
    class Worker3(var inName: String){
      var name = inName
    }

     scala中的get set方法

    package com.chapter01.classabout
    
    import scala.beans.BeanProperty
    
    object BeanDemo {
      def main(args: Array[String]): Unit = {
        val b = new BeanTry
        b.name = "HAHA"
        println(b.name)
        //使用@BeanProperty自动生成的get set方法
        b.setName("GOGO")
        println(b.getName())
      }
    }
    
    class BeanTry {
      @BeanProperty var name: String = null
    }

     补充:

    scala的包(一)

    Scala会自动引入的包:java.lang.*    scala包  Predef包

    scala可以通过一个文件灵活的创建多个类和包

    //scala支持在一个文件中创建多个包
    package com.chapter01.packageabout { //包com.chapter01.packageabout
    
      class OutPack { //在com.chapter01.packageabout下创建类
        var name = "Outpackage"
    
        def play(message: String): Unit = {
          println(this.name + " " + message)
        }
      }
    
      class User {
    
      }
      package newpackagetry { //包com.chapter01.packageabout.newpackagetry
    
        class Pack { //在com.chapter01.packageabout.newpackagetry下创建类Pack
          var name = "package"
    
          def play(message: String): Unit = {
            println(this.name + " " + message)
          }
        }
    
        class User {
    
        }
    
        object packagetry { //在com.chapter01.packageabout.newpackagetry下创建object packagetry
          def main(args: Array[String]): Unit = {
            println("ok")
            //可以直接访问父包的类
            val op = new OutPack
            println("op=" + op)
            //若子包和父包存在同名类,就近原则
            val user = new User
            println("user=" + user)
            //若想访问同名父包类,声明路径
            val user2 = new com.chapter01.packageabout.User()
          }
        }
    
      }
    
    }

     

  • 相关阅读:
    zabbix proxy配置实战案例
    zabbix agent的主动工作模式实战案例
    使用Zabbix监控Nginx状态页实战案例
    基于Ambari的WebUI部署Storm服务
    Golang的高级数据类型-指针(Pointer)实战篇
    Golang的高级数据类型-结构体(struct)实战篇
    Golang的高级数据类型-字典(map)实战篇
    Golang的高级数据类型-切片(slice)实战篇
    Golang的高级数据类型-数组(array)实战篇
    Golang的异常处理实战篇
  • 原文地址:https://www.cnblogs.com/20183711PYD/p/14406498.html
Copyright © 2011-2022 走看看