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);
    }
    渐变 --> 突变
  • 相关阅读:
    matplotlib
    CNN中feature map、卷积核、卷积核个数、filter、channel的概念解释,以及CNN 学习过程中卷积核更新的理解
    Batch Normlization原理
    pycharts
    stm 32 LED(寄存器版本)
    stm32 滴答时钟实现较准时延时功能
    LFS笔记一:从LFS网站获取资源
    ubuntu 12.04编译安装linux3.6.10内核笔记
    stm32 外部事件<按键>中断输入实现过程<寄存器>
    stm32 中断几个库函数实现过程分析。
  • 原文地址:https://www.cnblogs.com/lybpy/p/9726925.html
Copyright © 2011-2022 走看看