package level01
object class01 {
class Student(var name:String,var age:Int) {
println("Student构造函数被调用......")
//辅助构造函数
def this(name:String) {
this(name,15)
println("辅助构造函数被调用......")
}
//辅助构造器2
def this(age:Int) {
this("未知",age)
println("辅助构造函数被调用......")
}
def sayHello(): Unit = {
println(s"我是${name},今年${age}")
}
}
def main(args: Array[String]): Unit = {
//实例化类的对象 stu
// new的时候,就会自动调用一次构建函数
val stu = new Student("小花",18)
//调用对象的方法
stu.sayHello()
val stu1 = new Student("小明")
stu1.sayHello()
val stu2 = new Student(20)
stu2.sayHello()
}
}
private 修饰之后,它就是私有的,在类的外部无法被访问。只能在类的内部被访问。
package level01
object class01 {
//private:私人的,私有的
class Student(var name:String,var age:Int) {
//私有属性
private val phoneNum:String = "136xxxxxx"
//私有方法
def hobby():Unit = {
println(s"我的个人爱好是隐私信息.....${phoneNum}")
}
def sayHello(): Unit = {
println(s"我是${name},今年${age}")
hobby() //在类的内部,可以访问私有成员
}
}
def main(args: Array[String]): Unit = {
//实例化类的对象 stu
// new的时候,就会自动调用一次构建函数
val stu = new Student("小花",18)
stu.sayHello()
}
}
目标:让对象被打印的时候,输出信息更友好些
做法:重写 toString方法
在使用println输出一个对象的时候,它会自动调用toString方法,并输出这个方法的返回值
package level01
object class01 {
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)
//打印输出一个对象,输出的信息不友好
// level01.calss01$Student@2133c8f8
// level01.calss01$Student@43a25848
println(stu1)
println(stu2)
}
}