zoukankan      html  css  js  c++  java
  • 5、构造

    直接运行scala源码

    scala E:Demo.scala

    运行字节码

    scala E:Demo

    查看字节码

    javap -p E:workspace_ideamyscala	argetclassesDemo.class

    scala没有静态成员,静态成员放到object中

    object是单例对象,存放的是所有的静态成员,编译后,对应的是java的标准单例模式

    scala中成员变量的编译

    //源码
    class
    S { var v1 = 1 private var v11 = 1 val v2 = 2 private val v22 = 2 @BeanProperty  //用于生成java的标准get和set方法,不能用于 private 变量 var v3 = 3 @BeanProperty val v33 = 3 }
    //编译后
    public
    class S { private int v1; private int v11;
    private final int v2; private final int v22;
    private int v3; private final int v33;
    public int v1(); public void v1_$eq(int);
    private int v11(); private void v11_$eq(int);
    public int v2();
    private int v22();
    public int v3(); public void v3_$eq(int);
    public void setV3(int);
    public int v33();
    public int getV3();
    public int getV33(); public S(); }

    主构造之默认空参构造

    class 主构造{}  //或class 主构造 (){}
    public class 主构造 {
      public 主构造();
    }

    主构造之有参构造:含无var、val的参数1

    class 主构造 (var v1:Int,val v2:String,v3:Boolean){}  //可用private修饰,可给变量赋值默认参数
    public class 主构造 {
      private int v1;
      private final java.lang.String v2;
      public int v1();
      public void v1_$eq(int);
      public java.lang.String v2();
      public 主构造(int, java.lang.String, boolean);    //v3不在成员位置
    }

    主构造之有参构造:含无var、val的参数2

    class 主构造 (var v1:Int,val v2:String,v3:Boolean){
      def showV3()={
        v3
      }
    }
    public class 主构造 {
      private int v1;
      private final java.lang.String v2;
      private final boolean v3;  //v3被使用,sh升格为常量字段;该字段是对象私有的
      public int v1();
      public void v1_$eq(int);
      public java.lang.String v2();
      public boolean showV3();
      public 主构造(int, java.lang.String, boolean);
    }

    辅助构造

    class 辅助构造{
      var v = 0
      var n = ""
    
      def this(v:Int){
        this()
        this.v=v
      }
    
      def this(v:Int,n:String){
        this(v)
        this.n = n
      }
    }
    
    object 辅助构造{  //伴生对象
      def main(args: Array[String]): Unit = {
        val v1 = new 辅助构造
        val v2 = new 辅助构造(1)
        val v3 = new 辅助构造(1,"ww")
      }
    }
    public class 辅助构造 {
      private int v;
      private java.lang.String n;
      public static void main(java.lang.String[]);
      public int v();
      public void v_$eq(int);
      public java.lang.String n();
      public void n_$eq(java.lang.String);
      public 辅助构造();
      public 辅助构造(int);
      public 辅助构造(int, java.lang.String);
    }
    渐变 --> 突变
  • 相关阅读:
    SQL SUBSTRING 函数
    JS复制DOM元素文字内容
    CSS中DIV只出现竖向滚动条且内容自动换行
    Windows下sc create命令行添加/创建/修改服务
    C# FTP删除文件以及文件夹
    涨薪20%!听听这位资深机器学习面试官的内心独白
    《Java从入门到放弃》JavaSE篇:程序结构
    迷茫的程序员
    技术与技术人员的价值
    GitChat·人工智能 | 除了深度学习,机器翻译还需要啥?
  • 原文地址:https://www.cnblogs.com/lybpy/p/9726925.html
Copyright © 2011-2022 走看看