1. 说明

    (1)obj.isInstanceOf[T]:判断obj是不是T类型
    (2)obj.asInstanceOf[T]:将obj强转成T类型, 无法转换会报错
    (3)classOf获取对象的类名

    1. 案例实操 ```scala class Person { }

    object Person { def main(args: Array[String]): Unit = { val person = new Person

    1. //判断对象是否为某个类型的实例
    2. val bool: Boolean = person.isInstanceOf[Person]
    3. if (bool) {
    4. //将对象转换为某个类型的实例
    5. val p1: Person = person.asInstanceOf[Person]
    6. println(p1)
    7. }
    8. //获取类的信息
    9. val pClass: Class[Person] = classOf[Person]
    10. println(pClass)

    } }

    1. ```scala
    2. object HelloWorld {
    3. def main(args: Array[String]): Unit = {
    4. // 1. 类型的检测和转换
    5. val student: Student17 = new Student17("alice", 18)
    6. student.study() // student study
    7. student.sayHi() // hi from student alice
    8. println("=================")
    9. val person: Person17 = new Student17("bob", 20)
    10. person.sayHi() // hi from student bob
    11. println("=================")
    12. // 类型判断, 下面都是true
    13. println("student is Student17: " + student.isInstanceOf[Student17])
    14. println("student is Person17: " + student.isInstanceOf[Person17])
    15. println("person is Person17: " + person.isInstanceOf[Person17])
    16. println("person is Student: " + person.isInstanceOf[Student17])
    17. val person2: Person17 = new Person17("cary", 35)
    18. println("person2 is Student17: " + person2.isInstanceOf[Student17]) // false
    19. // 类型转换
    20. if (person.isInstanceOf[Student17]){
    21. val newStudent = person.asInstanceOf[Student17]
    22. newStudent.study() // student study
    23. }
    24. println(classOf[Student17]) //class com.jdxia.chapter01.Student17
    25. }
    26. }
    27. class Person17(val name: String, val age: Int){
    28. def sayHi(): Unit = {
    29. println("hi from person " + name)
    30. }
    31. }
    32. class Student17(name: String, age: Int) extends Person17(name, age){
    33. override def sayHi(): Unit = {
    34. println("hi from student " + name)
    35. }
    36. def study(): Unit = {
    37. println("student study")
    38. }
    39. }