1.如果要实现一个接口,前边没有extends关键字就可以使用extends,如果有要使用with关键字

2.Scala 中的接口支持多种继承,类或者抽象类不支持多种继承

3.抽象属性:未被实例化的属性

  定义一个抽象的属性: val name : String,在实现的子类中直接进行赋值。

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

package com.dtspark.scala.basics

trait Logger{
def log(message: String){
println("Logger: " + message)
}
} class Loggin(val name: String) extends Logger{
def loggin{
println("Hi, welcome ! " + name)
log(name)
}
} trait RichLogger extends Logger{
override def log(message: String){
println("RichLogger: " + message)
}
} object HelloTrait {
def main(args: Array[String]): Unit = {
new Loggin("DTSpark").loggin //Hi, welcome ! DTSpark
//Logger: DTSpark val personLoggin = new Loggin("DTSpark") with RichLogger //混入,好处:类有一个默认的实现,随时可以扩展第三方实现
personLoggin.loggin //Hi, welcome ! DTSpark
//RichLogger: DTSpark
}
}

6.当继承有多个trait时,多个trait中有同一个方法时,调用的顺序是从由往左,形成一个调用链条。

7.

//********* trait 中一部分是抽象的,一部分是具体的; 如下是 工厂方法 设计模式
trait Information{
def getInformation: String //抽象的
def checkIn: Boolean = {
getInformation.equals("Spark")
}
} class Passenger(val name: String) extends Information{
def getInformation = name;
}
//*************

最新文章

  1. HTML标签-【fieldset】-fieldset
  2. thinkphp nginx php-fpm url rewrite 导致 404 错误
  3. 选择排序-java
  4. Java 报表之JFreeChart(第二讲)
  5. C# winForm 窗体闪烁问题
  6. Kmp 算法模板 C
  7. Java 异常 —— java.io.InvalidClassException: javax.xml.namespace.QName; local class incompatible
  8. 64 位系统遇到未在本地计算机上注册 Microsoft.Jet.OLEDB.4.0
  9. baseDao 使用spring3+hibernate3方式
  10. 关于在Android设置全局变量随时获取context
  11. Java集合类之LinkedList链表
  12. UNIX线程之间的关系
  13. boost::thread boost库线程
  14. HDU-------An Easy Task
  15. redis持久化探究
  16. 解读python中SocketServer源码
  17. webpack 基本打包方法
  18. 定位 position 透明度 opacity
  19. python 的基础 学习 第一天
  20. ASP.NET Web API上实现 Web Socket - 转

热门文章

  1. asp.net IRequiresSessionState
  2. 用js来实现那些数据结构 第二章
  3. JAVA 判断对象内容是否含有空值
  4. lvds(800*600)
  5. MySQL-5.7权限详解
  6. Shell编程之for和select循环
  7. [POI2009]Slw
  8. awk中使用shell变量
  9. sqlserver 实时同步(发布订阅)
  10. Nuxt / Vue.js in TypeScript: Object literal may only specify known properties, but 'components' does not exist in type 'VueClass'