Class类
创建对象 调用对象的方法 修改对象的属性
package level02
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()
}
}
构造函数
package level02
class Student(var name:String, val age:Int) {
println("student......")
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()
}
}
辅助构造函数
package level02
class Student(var name:String, val age:Int) {
println("student......")
def this() = {
this("未知的",18)
println("辅助构造器被调用了...")
}
def this(age:Int) = {
this("未知的",age)
}
def sayHi():Unit = {
println(s"我是${name},我今年${age}")
}
}
object class01 {
def main(args: Array[String]): Unit = {
val stu1 = new Student("小花",18)
val stu2 = new Student()
val stu3 = new Student(20)
stu1.sayHi()
stu2.sayHi()
stu3.sayHi()
}
}
判断类和对象的关系
方式一:对象getClass 方式二:对象isInstanceof[类]
package level02
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)
println(stu.isInstanceOf[Student])
println(stu.isInstanceOf[Teacher])
}
}
改进类的代码
package level02
object Class04 {
class Student(var name:String,var age:Int) {
override def toString: String = s"姓名:${name}"
}
def main(args:Array[String]): Unit = {
val stu1 = new Student("小花",18)
val stu2 = new Student("小明",18)
println(stu1)
println(stu2)
}
}
package level02
object Class05 {
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]): Unit = {
val stu1 = new Student("2024101001","小花",18)
val stu2 = new Student("2024101001","小花",19)
if(stu1 == stu2){
println("他们是同一个人")
}else{
println("不是同一个人")
}
}
}
链式
package level02
object Class06 {
class Student() {
def sayHi():Student = {
println("sayhi")
this
}
def sayHello():Student = {
println("sayHello")
this
}
}
def main(arg:Array[String]):Unit = {
val stu1 = new Student()
stu1.sayHi().sayHello()
}
}