类的继承

28 阅读2分钟

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

object Class11 {

  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()
    }
  }

2.继承的好处之复用代码

object Class11 {

  class Boss {
    def test(): Unit = {}
    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()
    }
  }

3.继承的方法重写

/*
*
*  父类和子类的构造器调用顺序:先调用弗雷德构造器,再调用子类的构造器
 */

object Class12 {

  class Father() {
    println("Father 构造器被调用")
  }

  class Son extends Father(){
    println("Son 构造器被调用")
  }
    def main(args: Array[String]): Unit = {
      //new Father()

      new Son()
    }
  }

4.带参的构造器

/*
*
*  父类和子类的构造器调用顺序:先调用弗雷德构造器,再调用子类的构造器
*  带参构造器
 */

object Class13 {

  //父类
  class Dog(var name:String,var age:Int) {
    println(s"Dog ${name}, ${age} 构造器被调用")
  }

  //子类  中华田园犬
  //子类带参构造器
  //  1.继承父类的属性。 不用写 val, var 修饰符
  //父类构造器
  //  直接传入参数,不用写属性的类型
  class RuralDog(name:String, age:Int) extends Dog(name, age) {
    println("RuralDog的构造器...")
  }
      def main(args: Array[String]): Unit = {
        new RuralDog("旺财", 3)

    }
  }

5.

/*
*
*  父类和子类的构造器调用顺序:先调用弗雷德构造器,再调用子类的构造器
*  带参构造器
*  相比父类,子类有新的属性
 */

object Class13 {

  //父类
  class Dog(var name:String,var age:Int) {
    println(s"Dog ${name}, ${age} 构造器被调用")
  }

  //子类  中华田园犬
  //子类带参构造器
  //  1.继承父类的属性。 不用写 val, var 修饰符
  //  2.自己的新属性,加上var,val修饰符
  //父类构造器
  //  直接传入参数,不用写属性的类型
  class RuralDog(name:String, age:Int,var color:String) extends Dog(name, age) {
    println("RuralDog的构造器...")
  }
      def main(args: Array[String]): Unit = {
        var dog1 = new RuralDog("旺财", 3 ,"土黄色")

    }
  }