package level02
object Class02 {
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]): Unit = {
val stu = new Student("小花", 18)
stu.sayHi()
}
}
private: 私有的,不对外公布,不对外发布,在外面不可以访问。在家之外的地方,不可以被别人知道....
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])
}
}
// 目标: 改进类的代码,让它在println的时候,输出的信息更友好一点!
重写 toString方法
(1) override 重写,覆盖....
(2) toString 方法,是每个对象都会自带的一个方法,当我们使用println时,它就会自动被调用,返回一个字符串,就是输出的内容。
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)
}
}
目标:判断两个student对象是否相等的依据是:学号相同 并且 姓名相同
这里的判断条件可以自己来确定
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(args: Array[String]): Unit = {
val stu1 = new Student()
stu1.sayHi().sayHello()
}
}