继承的方法重写

71 阅读1分钟

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

class 子类名 extends 父类名 { 类体 }

package leve02

object Class010 {
  class Boss() {

  def power(): Unit = {
    println("Boss 有权利....")
  }

  var car = "豪车"
}
  class NoBody extends Boss{

  }
  def main(args:Array[String]):Unit = {
   val b = new NoBody()
   println(b.car)
    b.power()
   }
  }
package leve02

object Class010 {
  class Boss() {

  def power(): Unit = {
    println("Boss 有权利....")
  }

  var car = "豪车"
}
  class NoBody extends Boss{
   def run():Unit = {
     
   }
    override def power():Unit = {
      println("老莫,我想吃鱼了")
    }
  }
  def main(args:Array[String]):Unit = {
   val b = new NoBody()
   println(b.car)
    b.power()
    b.run()
   }
  }
  • 重写:子类与父类的同名方法进行重写
  • 子类自己的方法,与父类的方法不同名
package leve02

object Class011 {
  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)
   }
  }

子类带构造器

  1. 继承父类的属性。不用谢val,var修饰符
  2. 自己的新属性,加上var,val修饰符

父类构造器

  • 直接传入参数,不用谢属性的类型 在写子类构造器时:
  1. 如果某个属性可以从父类中继承过来,那么这些属性就不要添加任何的修饰符(val,var都不加)如果这属性是子类自己特有的,就需要补充修饰符;

  2. 在父类构造器时,直接传入对应的参数。