(一):private
默认情况下,类的属性在可以通过对象.属性名的方式来获取,如果不希望在类的外部被访问,可以用private来修饰
package level02
object class02 {
//private: 私人的,私有的
//private 修饰之后,它就是私有的,在类的外部无法访问。只能在类的内部被访问。
class Student(var name:String, var age:Int) {
//私有属性
private val phoneNuw:String = "135xxxxxx"
//私有方法
private def hobby():Unit = {
println(s"我的个人爱好是隐私信息....${phoneNuw}")
}
def sayHello() = {
println(s"我是${name}, 今年${age}")
hobby() // 在类的内部,可以访问私有成员
}
}
def main(args: Array[String]): Unit = {
//实例化类的对象 stu
// new 的时候,就会自动调用一次构造函数
val stu = new Student("小花",18)
stu.sayHello()
}
}
(二):重写toString
如果我们希望改进这一点,可以通过重写toString方法来实现。
使用println来输出对象时,他会自动调用toString方法。
在Scala中,要重写一个方法,你需要使用override关键字。对于toString方法,你可以在你的类中定义它,并使用override来指明这是对父类方法的重写。
定义toString方法
你可以在类的内部直接定义toString方法。这个方法通常不需要任何参数,并且返回一个String类型的结果
package level02
object class02 {
//目标:让对象被打印的时候,输出信息更友好一些
//做法: 重写 toString方法
// 在使用println输出一个对象的时候,它会自动调用toString方法,并输出这个方法的返回值
class Student(var name:String, var age:Int) {
override def toString:String = s"Student(${name}, ${age})"
}
def main(args: Array[String]): Unit = {
val stu1 = new Student("小花",18)
val stu2 = new Student("小明",19)
// 打印输出一个对象,输出的信息不友好
// level02.class03$Student@2133c8f8
// level02.class03$Student@43a25848
println(stu1)
println(stu2)
}
}