🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
* 继承使用`extends`关键字; * 如果子类要重写父类的成员(字段、方法)都必须使用`override`关键字修饰 * 无论是哪种类,子类都不能重写父类中的`var`字段; ```scala class Parent1(var name:String){ val age:Int=0 } class Parent2(val name:String){ val age:Int=0 } // 运行报错 class Child1(override val name:String) extends Parent1(name) // 运行成功 class Child2(override val name:String) extends Parent2(name) ``` * 如果不想某个类或成员被继承,可以使用`final`修饰类或成员; * 子类只能有一个直接父类,即只支持单继承,多重继承;不支持多继承; ```scala package org.example.oop class Person { def printName():Unit = println(this.getClass.getName) } class Employee extends Person { // 重写父类的方法override关键字是必须写的 override def printName() = super.printName() } object App { def main(args: Array[String]): Unit = { val person = new Person person.printName() // org.example.oop.Person val employee = new Employee employee.printName() // org.example.oop.Employee // 判断变量是否属于某一种类型 var r1 = person.isInstanceOf[Person] // true var r2 = person.isInstanceOf[Employee] // false var r3 = employee.isInstanceOf[Person] // true // 向上转型 var r4 = employee.asInstanceOf[Person] // org.example.oop.Employee@357246de // var r5 = person.asInstanceOf[Employee] 向下转型,运行报错 } } ```