class 类
Student 构造函数(构造器),用来创建对象,new的时候,就会自动调用一次。
构造函数:
(1)主构造函数
(2)辅助构造函数
特点:名字就叫this。它的代码的第一行必须是调用主构造器。可以有多个。
package level02
object l1 {
//class 类
//Student 构造函数,用来创建对象,new的时候,就会自动调用一次。
// 构造函数:主构造函数,辅助构造函数
class Student(var name:String,var age:Int) {
println("Student构造函数被调用.....")
// 辅助构造函数1
def this(name:String){
this(name,15)
}
// 辅助构造函数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
private: 私人的,私有的
private 修饰之后,它就是私有的,在类的外部无法被访问。只能在类的内部被访问。
package level02
object l2 {
//private: 私人的,私有的
//private 修饰之后,它就是私有的,在类的外部无法被访问。只能在类的内部被访问。
class Student(var name:String,var age:Int) {
//私有属性
private val phoneNum:String="136xxxxx"
//私有方法
private 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
目标:让对象被打印的时候,输出信息更友好一些 做法:重写 toString 方法 在使用 println 输出一个对象的时候,它会自动调用 toString 方法,并输出这个方法的返回值!
package level02
object l3 {
// 目标:让对象被打印的时候,输出信息更友好一些
// 做法:重写 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.class03Student@2133c8f8
//level02.class03Student@43a25848
println(stu1)
println(stu2)
}
}