多态:
同一个操作,作用于不同的对象,有不同的执行结果。
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)
}
}
存在继承关系的时候,构造器的调用顺序?
父类构造器 → 子类构造器
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会自动调用构造器去生成对象
}
}