一、类型检查和转换
(1)obj.isInstanceOf[T]:判断obj是不是T类型。
(2)obj.asInstanceOf[T]:将obj强转成T类型。
(3)classOf获取类模板。
def main(args: Array[String]): Unit = {
// 判断对象的类型 以及转换对象的类型
// 只有多态会使用到
val person1: Person = new Student
person1.sayHi()
// 想要调用子类独有的属性和方法 需要对其进行转换 转换为对应的子类才行
val student1: Student = person1.asInstanceOf[Student]
student1.sayHi()
// 即使在多态中 也会存在多个子类 不能直接转换 需要先判断
if (person1.isInstanceOf[Teacher]) {
val teacher1: Teacher = person1.asInstanceOf[Teacher]
teacher1.sayHi1()
}
// 调用固定的方法 返回类模板
val value: Class[Student16] = classOf[Student16]
}
class Person {}
class Student extends Person {
// 子类当中独有的属性和方法 使用多态无法调用
def sayHi(): Unit = {
println("hi")
}
}
class Teacher extends Person {
// 子类当中独有的属性和方法 使用多态无法调用
def sayHi1(): Unit = {
println("hi teacher")
}
}
二、枚举类和应用类
枚举类:需要继承Enumeration
应用类:需要继承App
// 枚举类
object Color extends Enumeration {
val RED: Color.Value = Value(1, "red")
val GREEN = Value(2, "green")
}
// 应用类
object Application extends App {
println("hello")
}
三、Type定义新类型
使用type关键字可以定义新的数据数据类型名称,本质上就是类型的一个别名
object Test {
def main(args: Array[String]): Unit = {
type S=String
var v:S="abc"
def test():S="qwer"
}
}