首页 > 代码库 > 快学Scala 第十一课 (类继承)
快学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
重写字段:
- def只能重写另一个def
- val只能重写另一个val或不带参数的def
- var只能重写另一个抽象的var,否则重写报错。
快学Scala 第十一课 (类继承)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。