当前位置: 首页 > article >正文

Scala中抽象类重写

scala中的方法可以是抽象的和非抽象的,同样属性也可以是抽象和非抽象的。抽象方法可以实现,而非抽象方法可以继承或重写。属性中对于抽象成员是必须要实现的,而非抽想成员可以继承或重写。

如果子类中对抽象类中的方法定义不满意,仍可以使用override去覆盖的,也可以使用super来引用父类的成员.

注意事项
  • 子类要重写父类中的某一个方法,该方法必须要使用override关键字来修饰

  • 可以使用override来重写一个val字段.

  • 注意: 父类用var修饰的变量, 子类不能重写

    //定义抽象类
    //抽象类是一个包含一个或多个抽象方法的类
    //抽象方法:没有方法体,只有def和方法名
    abstract  class AICar(){
    //具体属性
      var brand = "x"
      val color = "red"
      //抽象属性没有
      var hasDriver:Boolean
      //具体方法有
      def run():Unit = {
        println("run...")
      }
      //抽象方法
      def autoRun
    }
    
    //定义一个子类来实现(继承)抽象类
    class Model3 extends AICar{
      //子类要实现所有的抽象方法:抽象方法+抽象属性
      var hasDriver = false
    
      def autoRun():Unit ={
        println("Model3的自动驾驶技术")
      }
      //重写具体属性  -var 直接赋值
      brand = "TSL"
      //重写具体属性  -val 使用override
      override  val color :String = "white"
      //重写具体方法:使用override
      override  def run():Unir={
        println(s"Model3 run...${color} ${brand}")
      }
    }
    object day15 {
      def main(args: Array[String]): Unit = {
        //抽象类,不能new
        //new AICar()
        val m1 = new Model3()
        m1.run()
    //    m1.autoRun()
      }
    
    }
    


http://www.kler.cn/news/359083.html

相关文章:

  • 使用JMeter录制元件来录制HTTPS下的脚本
  • 第三方软件检测机构有哪些服务?重庆软件检测机构分享
  • C# WinForm实现画笔签名及解决MemoryBmp格式问题
  • YOLOv11改进策略【Conv和Transformer】| ACmix 卷积和自注意力的结合,充分发挥两者优势
  • 【MATLAB源码-第278期】基于matlab的ACO-OFDM系统仿真,输出误码率曲线图、时域频域图和子载波分离时域图。
  • Python内置函数classmethod()详解
  • JAVA设计模式学习之策略模式详解
  • uniapp onPageScroll
  • 全面解析EFK日志管理系统部署流程
  • Could not load dynamic library “libcudart.so.11.0
  • 2024年10月第2个交易周收盘总结:怎样卖出!
  • ESD防静电闸机检测为汽车电子工厂车间保驾护航
  • 大模型学习笔记
  • sql实战解析-sum()over(partition by xx order by xx)
  • 【分布式微服务云原生】《微服务架构大揭秘:关键组件全览与实战指南》
  • .net framework 3.5sp1组件如何安装
  • Java设计模式六大原则
  • uniapp picker实现省市二级级联和省市区三级级联
  • QSpliter实例操作
  • 03 设计模式-创造型模式-单例模式