特质、抽象类、继承、重写、实现等

package day03

/**
  * 特质、抽象类、继承、重写、实现等
  */
object ClassDemo {

  def main(args: Array[String]): Unit = {

    val human = new Human

    println(human.name)
    println(human.climb)
    println(human.fight)
  }
}

/**
  * 特质
  */
trait Flyable {
  // 声明一个没有值的字段
  val diatance: Int = 900

  // 声明一个没有实现的方法
  def fight: String

  // 声明一个实现的方法
  def fly: Unit = {
    println("I can fly")
  }
}

/**
  * 抽象类
  */
abstract class Animal {
  // 声明一个没有赋值的字段
  val name: String
  // 声明一个没有实现的方法
  def run(): String

  //声明一个有实现的方法
  def climb: String = {
    "I can climb"
  }
}

class Human extends Animal with Flyable {
  override val name = "张三"
  // 重写了抽象类中没有实现的方法
  override def run() = "I can run"

  // 重写了抽象类中没有实现的方法
  override def climb: String = "override climb"

//  override val diatance = 100

  // 实现了特质中没有实现的方法,可以不用override关键字,用了也可以
  def fight = "with 棒子"

  // 实现了特质中有实现方法
  override def fly: Unit = println("override fly")
}

你可能感兴趣的:(特质、抽象类、继承、重写、实现等)