特质

21 阅读1分钟
package level02

/**
 * 特质:trait
 * 它用来实现多继承
 */
object class019 {
  trait Tall {
    var height:Int = 180
  }
  trait Eye {
    var beautifulEye:String = "大眼睛"
  }
  //clas 就有两个父类
  class Girl extends Tall with Eye{}
    def main(args: Array[String]): Unit = {
      val girl1 = new Girl()
      println(girl1.beautifulEye)
      println(girl1.height)
    }
  }
package level02
/**
 * 特质:trait
 *具体可以写什么 == abstract class
 * 可以写(以下4个)
 * 1.抽象属性
 * 2.具体属性
 * 3.抽象方法
 * 4.具体方法
 */
object class20 {
  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 Girl extends Tall with Eye{
    override var name: String = "女士"

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

    var age: Int = 18
  }
  def main(args: Array[String]): Unit = {
    val girl1 = new Girl()
    girl1.say()
    println(girl1.beautifulEye)
    println(girl1.height)
  }
}