package scala.day01
import scala.beans.BeanProperty
/**
* 注意:@BeanProperty会生成四个方法
* name:String
* name_ = (new Value:String):Unit
* getName():String
* setName(new Value:String):Unit
*
* */
// 这个就可以理解为是主构造器,主构造器不使用,调用辅助构造器,需要调用this方法
// name是var修饰,有get也有set方法 age是val修饰,只有get方法
class Person(@BeanProperty var name:String,@BeanProperty val age:Int){
//私有的成员,必须进行初始化
private var id = 0
def insert(a:Int):Unit = {id += a}
def current():Int = id
//String 类型的默认值为null
@BeanProperty var clazz:String=_
//Int 类型的默认值为0
@BeanProperty var score:Int=_
//定义辅助构造器1
def this(name:String,age:Int,clazz:String){
//调用主构造器的方法,若主构造器为空,则调用this()
this(name,age)
this.clazz = clazz
}
//定义辅助构造器2
def this(name:String,age:Int,clazz:String,score:Int){
//调用辅助构造器1的构造方法
this(name,age,clazz)
this.score = score
}
override def toString: String = {
"name:"+name+",age:"+age+",class:"+clazz+",score:"+score
}
}
object Person{
def run():String={".....Person半生对象被调用了,,,."}
}
object Oop1 {
def main(args: Array[String]): Unit = {
println(Person.run())
var p1 = new Person("wangwei",22)
var p2 = new Person("wangwei",22,"20152001")
var p3 = new Person("wangwei",22,"20152001",100)
println(p1.toString)
println(p2.toString)
println(p3.toString)
p1.setName("kkkkkkk")
p1.setClazz("201503")
println(p1.toString)
println(p1.getAge)
println(p1.getScore)
}
}