类的继承

20 阅读1分钟
package level02

/**
 * 多个类之间的关系:继承
 * 好处:不劳而获
 * 重写:子类对父类的同名方法进行重写
 */

object class013 {
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()
  }
}
package level02
/**
 * 父类和子类的构造器调用顺序:先调用父类的构造器,再调用子类的构造器
 *带参构造器
 *相比父类,子类有新属性
 */
object class014 {
  class Father() {
    println("Father 构造器被调用")
  }
  class Son extends Father(){
    println("Son 构造器被调用")
  }
  def main(args: Array[String]): Unit = {
    //new Father
    new Son
  }
}
package level02
object class015 {
  //父类
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(s"RuralDog 的构造器...${color}")
  }
  def main(args: Array[String]): Unit = {
   var dog1= new RuralDog ("旺财",3,"土黄色")
  }
}