package lyzx.com.basic.day02
class User {
/**
* var 变量会生成getter和setter方法
* val 变量会生成getter方法
*
* private 修饰的变量生成的getter/setter都是private的
* private[this]修饰的变量不会生成getter/setter方法
*/
var age = 18;
val contury = "China";
private var sex = "1"
private[this] var ablity = ""
/**
* 通过使用private修饰var + 重写getter、setter的方式值对外暴露
* var变量的getter方法
*/
private var school = "北京大学"
def getSchool(): String ={
return school
}
def setSchool(newName:String): Unit ={
if("清华大学".equals(newName))
school = newName
}
}
User类代码如上
package lyzx.com.basic.day02
/**
* Scala中,可以给类定义多个辅助constructor,类似于java中的构造函数重载
* 辅助constructor之间可以互相调用,而且必须第一行调用主constructor
*
* Scala中,主constructor是与类名放在一起的,与java不同
* 而且类中,没有定义在任何方法或者是代码块之中的代码,就是主constructor的代码
*/
class Student{
private var name="";
private var age=0;
private var score="";
def this(name1:String,age1:Int){
this()
this.name = name1
this.age = age1
}
def this(name:String,age:Int,score:String){
this(name,age)
this.score = score
}
override def toString = s"Student($name, $age, $score)"
}
Strudent类如上所示
package lyzx.com.basic.day02
class T3 {
def f1(): Unit ={
val u = new User
println(u.age)
println(u.contury)
u.age = 199
println(u.age)
//编译不通过
// u.contury = "";
println(u.getSchool())
u.setSchool("清华大学")
u.setSchool("清华大学2")
println(u.getSchool())
}
def f2(): Unit ={
val t = new Student("lyh",22,"清华大学")
println(t.toString)
}
}
object T3{
def main(args: Array[String]): Unit = {
val t = new T3
t.f2()
}
}