12-Scala类型转换

object TypeConvert {
  def main(args: Array[String]): Unit = {
    /*
    * classOf 可以得到类名
    * isInstanceOf 判断是否为指定类型
    * asInstanceOf 类型转换
    * 注意点:
    *  1 需要使用isInstanceOf 判断对象是否为指定类的对象,如果是的话,则可以使用 asInstanceOf 将对象转换为指定类型;
    *  2 p.isInstanceOf[XX] 判断 p 是否为 XX 对象的实例;p.asInstanceOf[XX] 把 p 转换成 XX 对象的实例
    *  3 如果没有用isInstanceOf 先判断对象是否为指定类的实例,就直接用 asInstanceOf 转换,则可能会抛出异常;
    *  4 对象是 null,则isInstanceOf 一定返回 false, asInstanceOf 一定返回 null;
    *  5 p.asInstanceOf[XX] 并没有该改变p的类型,而是返回了一个新的类型
    * */
    val s = "king"
    println(s.getClass.getName()) // 反射机制

    var person20 = new Person200

    println(classOf[Person200]) //获取类名。

    var emp = new Emp100
    // 将子类的引用给父类(向上转换,自动)
    person20 = emp

    var emp2 = person20 // 类型Person200
    // 将父类的引用重新转换成子类的引用(多态),即向下转移
    if (person20.isInstanceOf[Person200]){
      var emp3 = person20.asInstanceOf[Emp100]
      emp3.sayHello()

    }

  }
}

class Person200{
  var name:String = _

  def  printName(): Unit ={
    println("Person100 printName() "+ name)
  }

  def SayHi(): Unit ={
    println("SayHi.....")
  }

  def sayHello(): Unit ={
    println("hello nihao")
  }
}

class Emp100 extends Person200{
  override def printName(): Unit = {
    println("Emp100 printName() "+ name)
    super.printName()
    SayHi()

  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值