第十一课:Scala面向接口编程彻底实战

Scala中的接口是trait,但是trait是可以有具体方法的,当trait中全是具体方法的时候,就变成了工具类

 

1.trait中可以是每个方法都被实现,例如SparkContext的Logging,这种类一般都作为工具类

 

class SparkContext(config: SparkConf) extends Logging with ExecutorAllocationClient {

 

ExecutorAllocationClient 也是一个接口

 

2.可以发现,Logging和ExecutorAllocationClient  都是接口,即使Logging是接口,当实现第一个接口的时候,仍然使用extends关键字,后面的接口用with关键字

 

3.Scala中的trait支持多重继承,而之前提到的类和抽象类并不支持多重继承,正因为可以多重继承,所以可以继承很多工具类(接口)

 

接口的继承和普通的类的继承是否是一样的呢?

是不一样的,假如是类的继承,field是属于父类的,而接口的继承,field是属于子类的

 

4.Scala有一个抽象属性,抽象属性必须写类型,例如val name:String,这样子类必须实现该属性

 

5.Scala的类的实例对象也可以混入接口,以扩展当前对象实例的功能

例如:

package com.dt.spark.scala.basics

trait Logger {

  def log(message: String) = println(message)

}

trait RichLogger extends Logger {

  override def log(message: String) = println("Rich:"+message)

}

class Login(val name: String) extends Logger {

  def login() {

    println("Hi,"+name)

    log("haha")

  }

 

}

object HelloTradit {

 

  def main(args:Array[String]){

    val login=new Login("john") with RichLogger

    login.login()

  }

 

}

 

好处在于:类可以有默认的实现,同时可以随时扩展自己的实现!!!!!

 

6.多重继承的时候,继承了多个接口,先执行哪一个接口呢?这是很重要的,因为可能不同的接口里面有共同的方法,那这时候顺序就很重要了

是从右往左执行

 

归纳总结:1.Scala中的接口是什么?它的特点是什么

2.Scala中类和抽象类,接口等支持多重继承吗?

3.Scala中的抽象属性

4.关于对象混入,好处?

5.多重继承的时候,继承了多个接口,先执行哪一个接口呢?

 

转载于:https://my.oschina.net/u/1449867/blog/725573

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值