Scala中两种Days类实现的差异及n的可访问性问询
Scala两种Days类实现的差异分析
一、n的可访问性
两种实现里,n的可访问性完全相同,都是类的公有成员,能在类外部直接访问。
二、其他差异
构造参数的可见性与复用
第一种实现中,days是类的私有构造参数(默认可见性),仅能在类内部使用,外部无法直接访问;同时额外定义了公有val成员n来持有days的值。
第二种实现是Scala的语法糖,直接将构造参数声明为val,编译器会自动生成对应的公有成员变量,且这个构造参数本身也能在类内部直接使用(相当于同时定义了构造参数和公有val成员)。字节码效率
第一种实现会生成两个字段:一个对应私有构造参数,另一个对应n的公有字段;第二种实现仅生成一个n的公有字段,代码更简洁高效。初始化逻辑的灵活性
第一种实现可以在n的赋值语句中加入额外逻辑,比如对days做类型转换、合法性校验等;第二种实现是直接将构造参数的值赋给成员,若要添加额外逻辑,需要单独在构造代码块中处理。
内容的提问来源于stack exchange,提问作者Taras Z
相关产品推荐
相关产品推荐

