- scala中分主构造方法、辅助构造方法,辅助构造方法必须调用主构造方法
class Person(name:String,age:Int){ // 主构造方法
this(name:String,age:Int,address:String){ // 辅助构造方法
this(name,age) // 必须调用主构造方法
}
}
/**
* 主构造器中的参数name是Cat1中的局部变量
* @param name
*/
class Cat1(name:String){
}
/**
* 主构造器中的参数使用val声明,会被当作类中的只读属性,有getter,类外部可以方法,但不能赋值
* @param name
*/
class Cat2(val name:String){
}
/**
* var声明的nane是读写属性
* @param name
*/
class Cat3(var name:String){}
- 如果父类有主构造方法,子类要显示调用父类的主构造方法
class A(name: String) {
}
class B(name: String, age: Int) extends A(name) { // 显示调用父类的主构造方法
def this(name: String, age: Int, address: String) {
this(name, age) // 调用子类主构造方法
}
}
class Pig(var name: String) {
def info: Unit = println(name)
}
object Pig {
def apply(name: String): Pig = new Pig(name)
}
val p = new Pig("new佩奇")
p.info
val pig = Pig("apply佩琦")//调用apply方法
pig.info
网友评论