zoukankan      html  css  js  c++  java
  • Scala类和对象笔记

    参考视频哔哩哔哩https://www.bilibili.com/video/av76280600?from=search&seid=10529351688409433389

    Java可以和Scala混编

    1.数据类型
    与Java类似,区分大小写;(首字母大写)
    不同点:
    Unit表示无值,与Java的void等同;
    Nothing所有其他类型的子类型,表示没有值;
    Any所有类型的超类,任何实例都属于Any类型;很像object
    Nil长度为0的List;

    2.val 和 var
    Scala中定义变量用var
    Scala中定义变量用val;

    尽量使用val易于回收;

    /**
     * Scala object相当于Java中的单例,object中定义的全是静态的
     * 定义变量var,定义常量val;变量和常量类型可以省略不写,会自动推断;
     * 每行后面有分号自动推断机制,不用显示写“;”
     */
    object Test_ClassAndObj {
      def main(args: Array[String]): Unit = {
        val a = 1
        var b=2
        b = 3
        println(a+b)
      }
    }

     3.Scala类中可以传参,传参一定要指定类型,有了参数就有了默认了构造。类中属性默认有getter和setter方法

    class Student(sname :String,sage:Int){
      val name=sname
      val age=sage
    }
    
    object Test_ClassAndObj {
      def main(args: Array[String]): Unit = {
        val t=new Student(sname="tzk",sage=20)
        println(t.name)
      }
    }

     4.Scala中 object相当于Java中的单例,object中定义的全是静态的,相当于Java中的工具类

    class Student(sname :String,sage:Int){
      val name=sname
      val age=sage
    
      def play(): Unit ={
        println("使用object中定义的静态变量str:"+Test_ClassAndObj.str)
      }
    }
    
    object Test_ClassAndObj {
      val str="Hello Word"
      def main(args: Array[String]): Unit = {
        val t=new Student(sname="tzk",sage=20)
        //println(t.name)
        t.play()
      }
    }

     5.类中重写构造时,构造中第一行必须要先调用默认的构造;def this(...)

    class Student(sname :String,sage:Int){
      val name=sname
      val age=sage
      var sex='M'
      def this(tname:String,tage:Int,tsex:Char){
        this(tname,tage)
        this.sex=tsex
      }
    
    }
    
    object Test_ClassAndObj {
      def main(args: Array[String]): Unit = {
        val s=new Student(sname="tzk",sage=20)
        val t=new Student(tname="zhangsan",tage=18,tsex='Y')
        println(t.name)
      }
    }

     6.Scala中当new一个类时,类中除了方法不执行(除了构造),其他均执行;例如下例类中打印"创建学生类",则在创建的时候打印输出

    class Student(sname :String,sage:Int){
      val name=sname
      val age=sage
      var sex='M'
      def this(tname:String,tage:Int,tsex:Char){
        this(tname,tage)
        this.sex=tsex
      }
      println("创建学生类")
    }
    
    object Test_ClassAndObj {
      def main(args: Array[String]): Unit = {
        val s=new Student(sname="tzk",sage=20)
        val t=new Student(tname="zhangsan",tage=18,tsex='Y')
      }
    }
  • 相关阅读:
    Navicat Premium 12连接Oracle时提示oracle library is not loaded的问题解决
    事务传播机制Propagation.REQUIRES_NEW
    @ApiImplicitParams、ApiImplicitParam的使用
    启动微服务项目的时候报redisInit错误---本地启动redis服务
    Swagger介绍及使用
    mybaitis框架-trim标签
    pgadmin怎样创建新的连接
    微服务项目启动
    管理中第一可怕之事(2) . 分类: 项目管理 2014-06-25 18:54 257人阅读 评论(0) 收藏
    管理中第一可怕之事(1) . 分类: 项目管理 2014-06-25 18:53 264人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/sengzhao666/p/12248851.html
Copyright © 2011-2022 走看看