Scala入门-构造器参数


Scala 构造器参数支持三种方式,默认无修饰符、使用 val 关键字声明、使用 var 关键字声明。

无修饰符

Scala 类的主构造器的形参未用任何修饰符修饰,那么这个参数是局部变量。

比较简单,就不给出具体代码了。

使用 val 声明

如果主构造器参数使用 val 关键字声明,那么 Scala 会将参数作为类的私有的只读属性使用。

// inName 就是 Person 的一个 private 只读属性
class Person(val inName: String) {
  var name = inName
}

查看字节码,一目了然。这里 inName 参数被声明为 private final,且有对应的 setter 方法。

public class Person {
  private final String inName;

  private String name;

  public String inName() {
    return this.inName;
  }

  public Worker2(String inName) {
    this.name = inName;
  }

  public String name() {
    return this.name;
  }

  public void name_$eq(String x$1) {
    this.name = x$1;
  }
}

使用 var 声明

如果主构造器参数使用 var 关键字声明,那么 Scala 会将参数作为类的成员属性使用,可读写。

// inName 是 Person 的一个 private 的可以读写属性
class Person(var inName: String) {
  var name = inName
}

查看字节码,一目了然。这里 inName 参数被声明为 private ,且有对应的 getter 和 setter 方法。

public class Person {
  private String inName;

  public String inName() {
    return this.inName;
  }

  public void inName_$eq(String x$1) {
    this.inName = x$1;
  }

  private String name = inName();

  public String name() {
    return this.name;
  }

  public void name_$eq(String x$1) {
    this.name = x$1;
  }

  public Person(String inName) {}
}

文章作者: Tianny
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Tianny !
评论
 上一篇
Scala入门-包 Scala入门-包
Scala 的包机制,在 Java 基础之上更加的灵活。 包路径Scala 中包名和源码所在的系统文件目录结构要可以不一致(Java 中强制要求一致),但是编译后的字节码文件路径和包路径会保持一致(编译器自动完成)。 系统目录结构如下:
2020-03-19
下一篇 
Scala入门-构造器 Scala入门-构造器
Scala 构造器包括两种:主构造器和辅助构造器。 主构造器object Construct01 { def main(args: Array[String]): Unit = { val p1 = new Person("To
2020-03-19
  目录