回顾
辅助构造器的作用
1.提供多种初始化方式:
辅助构造器允许类提供多种初始化选项,使得创建对象时更加灵活。
2.简化对象创建:
通过定义多个辅助构造器,您可以简化对象的创建过程,避免在主构造器中处理过多的参数。
3.调用主构造器:
辅助构造器可以通过 this 关键字调用主构造器,从而确保所有初始化逻辑都集中在主构造器中。
class Student(var name:String,val age:Int) {
def sayHi():Unit={
println(s"我是${name},我今年${age}")
}
}
object class01 {
def main(args: Array[String]): Unit = {
val stu1 = new Student("小花",18)
stu1.sayHi()
stu1.name="小花花"
stu1.sayHi()
}
}
scala中访问控制与方法重写
private:私有的。不对外公布,在外面不可以访问。在家之外的地方,不可以被别人知道...
object class02 {
class Student(var 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]): Unit = {
val stu1 = new Student("小花",18)
stu1.sayHi()
}
}
判断类和对像的关系
object class03 {
class Student() {}
class Teacher(){}
def main(args: Array[String]): Unit = {
val age:Int=1
val stu=new Student()
//返回类名
println(stu.getClass)
println(age.getClass)
//注意:[],结果是boolen值
println(stu.isInstanceOf[Student])
println(stu.isInstanceOf[Teacher])
}
}
目标:判断两个student对象是否相等的依据是:学号相同并且姓名相同
判断条件可以自己来确定
object class05 {
class Student(val id:String, var name:String,val age:Int) {
//改写equals方法
//在使用==判断的时候,会自动调用
//如果返回TRUE,则相等
//若返回FALSE,则不相等
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]): Unit = {
val stu1 = new Student("202410","小花",18)
val stu2 = new Student("202410","小花",19)
if(stu1 == stu2){
println("他们是同一个人")
}else{
println("不是同一个人")
}
}
}
链式
object class06 {
class Student() {
def sayHi():Student={
println("sayHi")
this
}
def sayHello():Student={
println("Student")
this
}
}
def main(args: Array[String]): Unit = {
val stu1 = new Student()
stu1.sayHi().sayHello()
}
}