创建类和对象
1. 使用IDEA创建一个scala项目,并创建object类。
2. 设置项目名,包名,项目地址。注意不要使用中文,空格,特殊符号作为名字及路径名。
package level2
class Student(var name:String, val age:Int) {
def sayHi(): Unit = {
println(s"我是${name}, 我今年${age}")
}
}
object Sc61 {
def main(args: Array[String]): Unit = {
val stu1 = new Student("小花", 18)
stu1.sayHi()
stu1.name = "小蛙蛙"
stu1.sayHi()
}
}
private核心含义是 “私人的”
package level2
object Sc62 {
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()
}
}
判断类和对关系
方法1: 对象.getClass()
方法2:对象.isInstanceof[类]
package level2
object Sc63 {
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])
}
}
重写toString
-
在Scala中,要重写一个方法,你需要使用override关键字。对于toString方法,你可以在你的类中定义它,并使用override来指明这是对父类方法的重写。
-
定义toString方法 你可以在类的内部直接定义toString方法。这个方法通常不需要任何参数,并且返回一个String类型的结果
package level2
object Sc64 {
class Student(var name:String, var age:Int) {
override def toString: String = s"姓名: ${name}"
}
def main(args: Array[String]): Unit = {
val stu1 = new Student("小哥", 19)
val stu2 = new Student("小老弟", 18)
println(stu1)
println(stu2)
}
}
判断两个对象是相等的
两个对象做比较==时,会自动调用equals方法。我们可以重写equals方法,并自己定义两个对象相等的标准
package level2
object Sc65 {
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("20241001","小哥", 18)
val stu2 = new Student("20041001","小哥", 19)
if(stu1 == stu2){
println("他们是同一个人")
} else {
println("不是同一个人")
}
}
}
链式结构
package level2
object Sc66 {
// 链式
// arr1.map(x => 2*x).filter(x=>x>5).foreach(println)
// 实现要点: 把当前方法的返回值设置为当前对象!
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()
}
// val arr1 = Array(1,2,3)
// arr1.map(x => 2*x).filter(x=>x>5).foreach(println)
}