一.继承的概念和基本语法
定义:在原有类的基础上定义一个新类,原有类称为父类,新类称为子类。
class 子类名 extends 父类名 { 类体 }
好处:复用代码和实现多态。复用代码:子类可以继承父类的特性。多态 : 子类可以在自己内部实现父类没有的特性。
假设定义Parents为父类,C1为子类,通过关键字extends子类便可以继承父类的特性,相关代码为:
object class11 {
class Boss {
def test():Unit={}
def power():Unit={
println("Boss有权力...")
}
var car = "豪车"
}
class NoBoody extends Boss{
def run():Unit={
}
override def power(): Unit = {
println("老莫,我想吃鱼了")
}
}
def main(args: Array[String]): Unit = {
val b =new NoBoody()
println(b.car)
b.power()
b.run()
}
}
三.继承的方法重写
当子类从父类继承的方法不能满足需要时,子类需要有自己的行为,怎么办?此时使用使用 override 可以重写父类的方法。 1. 在子类的内部,使用super来访问父类
class Father() {
println("Father 构造器被调用")
}
class Son extends Father(){
println("Son 构造器被调用")
}
def main(args: Array[String]): Unit = {
new Son()
}
}
二.继承的好处之复用代码
继承的特点:Dog就直接具备了animal的功能eating。
object class13 {
class Dog(var name:String,var age:Int) {
println(s"Dog ${name}.${age} 构造器被调用")
}
class RuralDog(name:String, age:Int) extends Dog(name,age){
println("RuralDog的构造器...")
}
def main(args: Array[String]): Unit = {
new RuralDog("旺财",3)
}
}
相比较父类,子类有新属性
class RuralDog(name:String, age:Int,var color:String) extends Dog(name,age){
println(s"RuralDog的构造器...${color}")
}
def main(args: Array[String]): Unit = {
new RuralDog("旺财",3,"土黄色")
}
}