类的继承

22 阅读1分钟

一.继承的概念和基本语法

定义:在原有类的基础上定义一个新类,原有类称为父类,新类称为子类。

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,"土黄色")
  }
}