|
scala中的类和java中的类的概念一样,语法形式有点不同:
class MyPersonClass (val age:Int,var addr:String,argc:String) {
//带参数形式的MyPersonClass它的主构造函数就是类中非字段,非方法的代码都是主构造函数的主体,
//主构造函数的参数是val age:Int,var addr:String,argc:String
//只不过val类型的变量将会自动创建getter方法,var类型的变量则会创建getter/setter方法,
//没有val或var的变量,比如上面argc,则纯粹只是一个参数变量而已,这个参数变量可以在主构造函数体内部使用
println("main constructor is running.....")
var hobby:String="" //var类型变量即会创建getter/setter
def this(age:Int,addr:String){ //其它def this都是辅助构造函数,辅助构造函数第一句都要调用主构造函数
this(age,addr,"")
hobby=""
}
private def privdisp(s:String){println("private "+s)} //只能在类中使用
protected def protecdisp(s:String){println("protected " + s)} //可以在本类中使用,也可以在子类中使用,但不能在类对象中使用
def publicdisp(s:String){println("public " + s)} //可以在实例对象中使用,也可以在本类及子类中使用
}
测试:
object ClassConstructorTest {
def main(args: Array[String]): Unit = {
val mpc = new MyPersonClass(10,"road10#","TV")
mpc.publicdisp("test")
}
}
显示如下:
main constructor is running.....
public test
|
|