• 寒假学习日报(四十)——继承知识补充


      今天补一下scala的继承知识。

    package com.chapter01.extendsabout
    
    object abstractabout {
      def main(args: Array[String]): Unit = {
        val n = new Sub_ABS
        n.cry()
        println("n.name=" + n.name + "	 n.age=" + n.age)
        //匿名子类
        val m = new ABS {
          override var name: String = "k"
    
          override def cry(): Unit = {
            println("cry匿名子类")
          }
        }
        m.cry()
        m.smile()
        println("m.name=" + m.name + "	 m.age=" + m.age)
      }
    }
    
    //抽象字段:没有初始化的字段
    //当类含有抽象属性时,需要标注abstract,因为scala中类的属性必须初始化,否则会报错
    abstract class ABS {
      //底层不会生成name属性,而是生成name和name_$eq方法
      var name: String  //抽象
      val age: Int = 10 //普通属性
      var num: Int = 0  //普通属性
    
      def cry() //抽象方法
      def smile(): Unit ={
        println("smile实现方法")
      }
    }
    
    class Sub_ABS extends ABS{
      //此处是重写抽象属性,本质上实现了抽象方法,因此override可省略
      var name: String = "SUB"
      //非抽象属性则必须声明override
      override val age: Int = 20
      //var变量使用override重写时,代码段不会报错,但运行时会抛出错误
      //override var num: Int = 2
      //***因此var变量重写必须使用抽象方法
    
      //override可省略
      def cry(): Unit = {
        println("cry抽象方法")
      }
    }

     在家的学习效率真不算高,慢慢来吧。要稳住心态才行。

  • 相关阅读:
    「学习笔记」Min25筛
    hash索引
    Thread的setDaemon(true)方法的作用
    Reactor模式详解
    题目整理
    jstat命令查看jvm的GC情况 (以Linux为例)
    jvm参数调优
    以网游服务端的网络接入层设计为例,理解实时通信的技术挑战
    Java 工程师成神之路
    ID生成 雪花算法
  • 原文地址:https://www.cnblogs.com/20183711PYD/p/14413324.html
Copyright © 2020-2023  润新知