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;
}
//*************

Scala 面向接口编程的更多相关文章

  1. javascript设计模式学习之十七——程序设计原则与面向接口编程

    一.编程设计原则 1)单一职责原则(SRP): 这里的职责是指“引起变化的原因”:单一职责原则体现为:一个对象(方法)只做一件事. 事实上,未必要在任何时候都一成不变地遵守原则,实际开发中,因为种种原 ...

  2. Java中的面向接口编程

    面向接口编程是很多软件架构设计理论都倡导的编程方式,学习Java自然少不了这一部分,下面是我在学习过程中整理出来的关于如何在Java中实现面向接口编程的知识.分享出来,有不对之处还请大家指正. 接口体 ...

  3. Java面向接口编程,低耦合高内聚的设计哲学

    接口体现的是一种规范和实现分离的设计哲学,充分利用接口可以极大的降低程序中各个模块之间的耦合,提高系统的可维护性以及可扩展性. 因此,很多的软件架构设计理念都倡导"面向接口编程"而 ...

  4. java接口,接口的特性,接口实现多态,面向接口编程

    package cn.zy.cellphone; /**接口是一种引用数据类型.使用interface声明接口,形式 * 形式:public interface 接口名称{} * 接口不能拥有构造方法 ...

  5. java面向接口编程

    在oop中有一种设计原则是面向接口编程,面向接口编程有非常多优点,详细百度一大片.我来谈一下详细的使用中的一些不成熟的见解.! 首先面向接口编程能够消除类之间的依赖关系,使得业务仅仅依赖接口. 这样有 ...

  6. go 学习笔记之万万没想到宠物店竟然催生出面向接口编程?

    到底是要猫还是要狗 在上篇文章中,我们编撰了一则简短的小故事用于讲解了什么是面向对象的继承特性以及 Go 语言是如何实现这种继承语义的,这一节我们将继续探讨新的场景,希望能顺便讲解面向对象的接口概念. ...

  7. Python 中的面向接口编程

    前言 "面向接口编程"写 Java 的朋友耳朵已经可以听出干茧了吧,当然这个思想在 Java 中非常重要,甚至几乎所有的编程语言都需要,毕竟程序具有良好的扩展性.维护性谁都不能拒绝 ...

  8. 【GoLang】golang 面向对象编程 & 面向接口编程

    005.面向对象&接口编程 1 面向函数编程 1.1 将数据作为参数传递到函数入参 1.2 对象与函数是分离的 2 面向对象编程 2.1 使用者看起来函数作为对象的属性而非参数 2.2 函数属 ...

  9. Scala实战高手****第11课:Scala面向接口彻底实战和Spark源码鉴赏

    第一点: scala的接口trait中所有方法可以都被实现!! 这种情况一般会是一种工具方法的集合,例如接口 Logging! scala 多种继承用extends ... with  .... 在老 ...

随机推荐

  1. 流量监控系统---storm集群配置

    1.集群部署的基本流程 集群部署的流程:下载安装包.解压安装包.修改配置文件.分发安装包.启动集群 注意: 所有的集群上都需要配置hosts vi  /etc/hosts 192.168.223.20 ...

  2. iOS 认识runtime 中的三个指针 isa , IMP , SEL

    runtime中函数调用经常被提及的三个概念 isa,IMP,SEL 一  isa:是类指针,之所以说isa是指针是因为Class其实是一个指向objc_class结构体的指针,而isa 是它唯一的私 ...

  3. window7 3G/4G拨号操作

    Win7系统Modem拨号操作指导:https://wenku.baidu.com/view/bb855b1dc77da26925c5b0e1.html 拨号上网设置APN,拨号号码,帐号和密码:ht ...

  4. 纯CSS3动画按钮效果

    在线演示 本地下载

  5. IDEA使用前的各种基本设置(转)

    先搞个链接,以后自己慢慢总结:传送门

  6. jack server 常见错误解决方法【转】

    本文转载自:https://blog.csdn.net/qq_27061049/article/details/70156200 jack 服务常见错误解决方法 当你编译Android时,你不需要修改 ...

  7. 有些 where 条件会导致索引无效

    在查询中,WHERE 条件也是一个比较重要的因素,尽量少并且是合理的 where条件是徆重要的,尽量在多个条件的时候,把会提取尽量少数据量的条件放在前面,减少后一个 where 条件的查询时间.有些 ...

  8. struts2发送ajax的几个问题(不使用struts2-json-plugin的情况下)

    采用原始方式发送ajax到action时,会遇到get,post的不同,原因是ContentType的问题,ContentType必须是text/html,struts获取到的inputStream才 ...

  9. java深入探究11-基础加强

    1. ? extends String:String 子类;? super String:String 父类 2.反射->参数化类型表示 ParameteredType:参数化类型表示,就是获得 ...

  10. jQuery计时器插件

    /** * 定义一个jQuery计时插件,实现记录计时开始时间.结束时间,总共耗时的功能 * @param $ * * @author Ivan 2862099249@qq.com * @date 2 ...