建筑构造函数,提供更多的方式来创建对象
class Student(var name:String,var age:Int) {
println("student.....")
def this(age:Int)={
this("未知的",age)
}
def sayHi():Unit={
println(s"我是${name},我今年${age}")
}
}
object w27 {
def main(args: Array[String]): Unit = {
val stu = new Student("小花",18)
val stu3 = new Student(20)
stu.sayHi()
stu.name="小花花"
stu3.sayHi()
}
}
private:私有的。不对外发布,在外面不可以访问。在家之外的地方,不可以被别人知道
object w29 {
class Student(val name:String,val age:Int) {
private val hobbies: String = "躲在被子里"
private def hobby(): Unit = {
println(s"${hobbies}")
}
def sayHi(): Unit = {
println(s"${name},${age}")
hobby()
}
}
def main(args: Array[String]) = {
val stu = new Student("小花",18)
stu.sayHi()
}
}
判断类和对象的关系?亲子鉴定?
object w30 {
class Student(){}
class Teacher(){}
def main(args: Array[String]) = {
val age:Int = 1
val stu = new Student()
println(stu.getClass)
println(age.getClass)
println(stu.isInstanceOf[Student])
println(stu.isInstanceOf[Teacher])
}
}
改进类的代码,让它在println的时候,输出的信息更友好一点!
object w31 {
class Student(var name:String,var age:Int) {
override def toString: String = s"姓名:${name}"
}
def main(args: Array[String]) = {
val stu1 = new Student("小花",18)
val stu2 = new Student("小明",18)
println(stu1)
println(stu2)
}
}
判断两个Student对象是否相等的依据是:学号相等 并且 姓名相同
object w32 {
class Student(val id:String, val name:String,val age:Int) {
override def equals(obj:Any):Boolean={
println(s"比较是否相等...${this.id},${this.name},")
val other =obj.asInstanceOf[Student]
this.id == other.id && this.name == other.name
}
}
def main(args: Array[String]) = {
val stu1 = new Student("20240000","小花", 18)
val stu2 = new Student("20249999","小花", 18)
if (stu1==stu2){
println("他们是同一个人")
}else{
println("不是同一个人")
}
}
}
把当前方法的返回值设置为当前对象!
object w33 {
class Student() {
def sayHi(): Student = {
println("sayHi")
this
}
def sayHello(): Student = {
println("sayHello")
this
}
}
def main(args: Array[String]): Unit = {
val stu1 = new Student()
stu1.sayHi().sayHello()
}
}