/**
*
* @param name var 修饰 可以get set
* @param address val 修饰 只有get方法 没有set 不能改值
* @param level 相当于 private val
*/
class Zoo(var name: String, val address: String, level: String) {
//_代表默认值0 使用_必须表面类型,否则无法推断。
var animalNum: Int = _
//对象私有
private val space = "70万平米"
//加上this 当前对象私有
private[this] val breederNum = 200
//添加一个获取属性的方法
def getField(z: Zoo): Unit = {
//z 同属于Zoo 类
println(z.space)
// println(z.breederNum)//此时可以看到会报错
}
//构造时,该处会同时打印,说明这些都是主构造器的一部分,所以你可以在构造时添加一些方法,实现一些功能
val s = println("*****欢迎来到本动物园*******")
//构造器
//用this 添加辅助构造器 ,前提是必须以其他已经实现的构造器为基础
def this(name: String, address: String, level: String, num: Int) {
//以主构造器进行辅助构造
this(name, address ,level)
this.animalNum = num
}
override def toString = {
"名字:" + name +
"\n地址:" + address +
"\n级别:" + level +
"\n动物数量:" + animalNum +
"\n面积" + space
}
}
object Tourist extends App {
private val zoo = new Zoo("上海动物园", "上海", "一级")
println(zoo)
println("------------------------")
zoo.name = "改名上海第一动物园"
zoo.animalNum = 1000
println(zoo)
}