trait的基本使用

49 阅读1分钟

1·实现多个特质

格式:类名 extends 特质1 with 特质2 with 特质3

2·特质中的具体属性:重写var不需override和var,只需要属性名即可;重写val需要加上override关键字

3·特质:trait

作用:它用来实现多继承!

object w45 {
/*
特质:trait
作用:它用来实现多继承!
 */

  trait Tall {
    var height:Int = 180
  }
  trait Eye {
    var beautifulEye:String = "大眼睛"
  }
  // class 就有两个父类
  class Girl extends Tall with Eye {}
  def main(args: Array[String]): Unit = {
    val girl1 = new Girl()

   println( girl1.beautifulEye)
    girl1.height
  }

}

1·子类一定要实现所有父类中的抽象成员

object w46 {
/*
特质:trait
具体可以写什么   ==abstract class
1·抽象属性
2·具体属性


3·抽象方法
4·具体方法
 */

  trait Tall {
    var height:Int = 180

    var name:String

    def say():Unit={println(s"${name}")}

    def cry():Unit
  }
  trait Eye {
    var beautifulEye:String = "大眼睛"
    var age:Int
  }
  // class 就有两个父类
  //子类一定要实现所有父类中的抽象成员
  class Girl extends Tall with Eye {
     var name: String = "小米"

     def cry(): Unit ={
       println("cry......")
     }

     var age: Int = 10086
  }
  def main(args: Array[String]): Unit = {
    val girl1 = new Girl()

   println( girl1.beautifulEye)
   println( girl1.height)
   girl1.cry()
    println(girl1.age)
    println(girl1.name)
    girl1.say()
  }

}