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

mac2022-06-30  59

类继承:

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]) } }

运行结果:

truetruetruehelloabcclass Workerfalsefalsetrue

重写字段:

def只能重写另一个defval只能重写另一个val或不带参数的defvar只能重写另一个抽象的var,否则重写报错。

 

转载于:https://www.cnblogs.com/AK47Sonic/p/7341836.html

相关资源:JAVA上百实例源码以及开源项目
最新回复(0)