今天补一下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 + "\t 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 + "\t 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抽象方法") } }
在家的学习效率真不算高,慢慢来吧。要稳住心态才行。
原文:https://www.cnblogs.com/20183711PYD/p/14413324.html