多态

27 阅读1分钟

多态:

同一个操作,作用于不同的对象,有不同的执行结果。

package level02

object base09 {
    /*
    *面向对象的编程语言有三大特性 :封装,继承,多态
    *
    * 多态:同一个操作,作用于不同的对象,有不同的执行结果。
    *
     * */

   class Animal() {
      def eating(): Unit = {
       println("Animal eating")
      }
   }

   // Dog 继承了 Animal
   class Dog extends Animal() {
     override def eating(): Unit = {
       println("我是狗,我吃骨头大口大口嚼")
     }
   }

   // Cat 继承了 Animal
    class Cat extends Animal() {
      override def eating(): Unit = {
        println("我是猫,我吃猫粮小口小口吃")
      }
    }

    // 测试函数

   def test(animal: Animal): Unit = {
      animal.eating()
   }

    def main(args: Array[String]): Unit = {
     val dog = new Dog()
      val cat = new Cat()

      test(cat)
      test(dog)
    }
  }

image.png

存在继承关系的时候,构造器的调用顺序?

父类构造器 → 子类构造器

package level02

object base10 {
    /*
    * 存在继承关系的时候,构造器的调用顺序?
    * 父类构造器 → 子类构造器
    *
    * */

    class Animal() {
      println("父类构造器被调用.....")

    }

    // Dog 继承了 Animal
    class Dog extends Animal(){
      println("子类: Dog 构造器被调用.....")
    }

  //Puppy 继承了Dog
  class Puppy extends Dog(){
    println("子类: Puppy 构造器被调用.....")
  }



    def main(args: Array[String]): Unit = {
      new Puppy(); // new会自动调用构造器去生成对象

    }
  }

image.png