- var 修饰的属性是可以被修改的
- val 修饰属性是只读的,不能被修改
package leve02
class Student(var name:String,val age:Int) {
def sayHi():Unit = {
println(s"我是${name},我今年${age}")
}
}
object Class01 {
def main(args: Array[String]): Unit = {
val stu1 = new Student("小花", 18)
stu1.sayHi()
stu1.name="小花花"
stu1.sayHi()
}
}
Student() 构造函数(构造器),用来创建对象
- 主构造函数 class Student()
- 辅助构造函数,提供更多的方式来创建对象
辅助构造函数特点
- 名字就是this
- 第一句代码就是调用主构造器
package leve02
class Student(var name:String,val age:Int) {
println("Student......")
def this() = {
this("未知的",18)
println("辅助构造器被调用了...")
}
def this(age:Int) = {
this("未知的",age)
}
def sayHi():Unit = {
println(s"我是${name},我今年${age}")
}
}
object Class02 {
def main(args: Array[String]): Unit = {
val stu1 = new Student1("小花", 18)
val stu2 = new Student1()
val stu3 = new Student1(20)
stu1.sayHi()
stu1.name="小花花"
stu1.sayHi()
}
}
private:私有的。不对外公布,不对外发布,在外面不可以访问。在家之外的地方,不可以被别人知道...
package leve02
object Class03 {
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()
}
}
hobby()在类的内部,可以调用私有方法 println(stu.hobbies) stu.hobby()在类的外部,无法访问私有属性
package leve02
object Class04 {
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])
}
}