属性初始化时间
package com.chiato.chapter6object Test05_Constructor {def main(args: Array[String]): Unit = {new Student()println("==================")new Student("new chiato")}}class Student() {println("this is main constructor")// 先打印,还未初始化println(f"name=$name")var name = "chiato"var age = 18def this(name: String) {this()println("this is the 辅助构造器")this.name = nameprintln(f"name=$name")}}
此时输出结果为
调整主构造器位置后:
package com.chiato.chapter6
object Test05_Constructor {
def main(args: Array[String]): Unit = {
new Student()
println("==================")
new Student("new chiato")
}
}
class Student() {
println("this is main constructor")
var name = "chiato"
var age = 18
// 调整该行位置后
println(f"name=$name")
def this(name: String) {
this()
println("this is the 辅助构造器")
this.name = name
println(f"name=$name")
}
}
主构造器中形参直接作属性
Scala类的主构造器形参 包括三种类型:未用任何修饰、var修饰、val修饰
(1)未用任何修饰符修饰,这个参数就是一个局部变量
(2)var修饰参数,作为类的公有成员属性使用,可以修改
(3)val修饰参数,作为类的私有只读属性使用,不能修改
package com.chiato.chapter6
object TestAccess {
def main(args: Array[String]): Unit = {
var p:Person = new Person("bob", "男", 18)
p.name = "alias"
p.gender = "女"
println(f"gender = ${p.gender} name = ${p.name} age = ${p.age}")
}
}
class Person(var name: String, val gender: String, age: Int) {
}

