继承
scala语言是支持面向对象编程的,我们也可以使用scala来实现继承,通过继承来减少重复代码。
定义
- scala和Java一样,使用extends关键字来实现继承
- 可以在子类中定义父类中没有的字段和方法,或者重写父类的方法
- 类和单例对象都可以从某个父类继承
语法
class/object 子类 extends 父类 {
..
}
代码示例
object Test01 {
class Person {
//父类中的 name字段
var name: String = "super"
//父类中的getName方法
def getName: String = this.name
}
//子类继承父类
class Student extends Person {
}
def main(args: Array[String]): Unit = {
val student = new Student
println(student.name) //super
println(student.getName) //super
}
}
override和super
类似于Java语言,我们在子类中使用override需要来重写父类的成员,可以使用super来引用父类
用法
- 子类要覆盖父类中的一个方法,必须要使用override关键字
- 使用override来重写一个val字段
- 使用super关键字来访问父类的成员方法
示例
object Test02 {
class Person {
//父类中的name 字段
val name = "张三"
//父类中的getName 方法
def getName: String = this.name
}
//子类继承父类
class Student extends Person {
//重写 val 字段
override val name:String = "child"
//重写getName 方法
override def getName: String = "hello," + super.getName
}
def main(args: Array[String]): Unit = {
//调用
println(new Student().getName) //hello,child
}
}