zoukankan      html  css  js  c++  java
  • 快学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,否则重写报错。
  • 相关阅读:
    css3 练习
    onethink 返回上一页
    小程序之轮播图
    Node 基本使用
    IDEA Terminal
    Spring Shell简单应用
    Spring Theme简单应用
    Spring MVC的学习笔记
    Win10出现键盘未失灵,按下的键都是快捷键的问题
    SQL Server 添加描述
  • 原文地址:https://www.cnblogs.com/AK47Sonic/p/7341836.html
Copyright © 2011-2022 走看看