标签:get worker main 不能被继承 final abs font 关键字 结果
类继承:
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
重写字段:
标签:get worker main 不能被继承 final abs font 关键字 结果
原文地址:http://www.cnblogs.com/AK47Sonic/p/7341836.html