• 快学Scala 第十一课 (类继承)


    类继承:

    class People {
      
    }
    
    class Emp extends People{
      
    }

    和Java一样,final的类不能被继承。final的字段和方法不能被override。

    在Scala中重写一个非抽象方法必须使用override, 继承抽象方法前面加了override也没关系。

    abstract class Person {
      def say(s: String): Unit
    }
    
    class Worker extends Person{
      override def say(s: String) = {
        println(s + "abc")
      }
     
    }
    

    调用超类的方法,关键字用super

    class WorkerSub extends Worker{
      def say2(): Unit = {
        super.say("call father's say")
      }
    }
    

    isInstanceOf 判断对象类型,但不能区分父类型。

    asInstanceOf 转换为子类的类型

    用getClass和classOf精确判断类型

    object TestCase {
        def main(args: Array[String]): Unit = {
          
         val w = new WorkerSub()
         println(w.isInstanceOf[Worker])
         println(w.isInstanceOf[Person])
         println(w.isInstanceOf[WorkerSub])
         
         w.asInstanceOf[Worker].say("hello")
         
         println(classOf[Worker])
         println(w.getClass == classOf[Worker])
         println(w.getClass == classOf[Person])
         println(w.getClass == classOf[WorkerSub])
          
      }
      
    }
    

    运行结果:

    true
    true
    true
    helloabc
    class Worker
    false
    false
    true

    重写字段:

    1. def只能重写另一个def
    2. val只能重写另一个val或不带参数的def
    3. var只能重写另一个抽象的var,否则重写报错。
  • 相关阅读:
    查杀木马利器,clamav
    zabbix运行久了以后效率会变慢的原因分析
    oracle sqlplus
    3000价位电脑配置实践
    phpmyadmin 万能密码漏洞
    nginx 的防cc攻击
    减少tcp TIME_WAIT 的数量
    nginx平滑升级
    心太大
    CentOS5.2下安装mplayer
  • 原文地址:https://www.cnblogs.com/AK47Sonic/p/7341836.html
Copyright © 2020-2023  润新知