Scala 面向接口编程
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 面向接口编程的更多相关文章
- javascript设计模式学习之十七——程序设计原则与面向接口编程
一.编程设计原则 1)单一职责原则(SRP): 这里的职责是指“引起变化的原因”:单一职责原则体现为:一个对象(方法)只做一件事. 事实上,未必要在任何时候都一成不变地遵守原则,实际开发中,因为种种原 ...
- Java中的面向接口编程
面向接口编程是很多软件架构设计理论都倡导的编程方式,学习Java自然少不了这一部分,下面是我在学习过程中整理出来的关于如何在Java中实现面向接口编程的知识.分享出来,有不对之处还请大家指正. 接口体 ...
- Java面向接口编程,低耦合高内聚的设计哲学
接口体现的是一种规范和实现分离的设计哲学,充分利用接口可以极大的降低程序中各个模块之间的耦合,提高系统的可维护性以及可扩展性. 因此,很多的软件架构设计理念都倡导"面向接口编程"而 ...
- java接口,接口的特性,接口实现多态,面向接口编程
package cn.zy.cellphone; /**接口是一种引用数据类型.使用interface声明接口,形式 * 形式:public interface 接口名称{} * 接口不能拥有构造方法 ...
- java面向接口编程
在oop中有一种设计原则是面向接口编程,面向接口编程有非常多优点,详细百度一大片.我来谈一下详细的使用中的一些不成熟的见解.! 首先面向接口编程能够消除类之间的依赖关系,使得业务仅仅依赖接口. 这样有 ...
- go 学习笔记之万万没想到宠物店竟然催生出面向接口编程?
到底是要猫还是要狗 在上篇文章中,我们编撰了一则简短的小故事用于讲解了什么是面向对象的继承特性以及 Go 语言是如何实现这种继承语义的,这一节我们将继续探讨新的场景,希望能顺便讲解面向对象的接口概念. ...
- Python 中的面向接口编程
前言 "面向接口编程"写 Java 的朋友耳朵已经可以听出干茧了吧,当然这个思想在 Java 中非常重要,甚至几乎所有的编程语言都需要,毕竟程序具有良好的扩展性.维护性谁都不能拒绝 ...
- 【GoLang】golang 面向对象编程 & 面向接口编程
005.面向对象&接口编程 1 面向函数编程 1.1 将数据作为参数传递到函数入参 1.2 对象与函数是分离的 2 面向对象编程 2.1 使用者看起来函数作为对象的属性而非参数 2.2 函数属 ...
- Scala实战高手****第11课:Scala面向接口彻底实战和Spark源码鉴赏
第一点: scala的接口trait中所有方法可以都被实现!! 这种情况一般会是一种工具方法的集合,例如接口 Logging! scala 多种继承用extends ... with .... 在老 ...
随机推荐
- Android 工具类 SharedPreferences 封装
SharedPreferences 是 Android 数据存储方式中的一种,特别适合用来存储少量的.格式简单的数据,比如应用程序的各种配置信息,如是否打开音效,是否开启震动等等. SharedPre ...
- Python 开发者节省时间的 10 个小技巧
Python 是一个美丽的语言,可以激发用户对它的爱.所以如果你试图加入程序员行列,或者你有点厌倦C++,Perl,Java 和其他语言,我推荐你尝试Python. Python有很多吸引程序员的功能 ...
- 用C#编写猜数、九九乘法表‘、迷宫
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- jquery图片过滤归类应用
在线演示 本地下载
- SpringBoot Maven打包项目JAR/WAR
安装Maven 1. 登录 http://maven.apache.org/download.cgi 2. 下载 maven 压缩包 3. 解压apache-maven-3.6.0-bin.tar.g ...
- 语义web基础知识学习
最近找了一本书,<语义web技术基础>----Pascal Hitzler等编著的.因为最近在看关于自然语言处理的一些东西,就顺带翻了一下,做一点学习笔记,方便以后查看. 本书的作者 Pa ...
- mongodb 的安装(Centor OS )
1.下载地址 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.4.2.tgz 2.解压.配置 tar zxvf mongodb ...
- hdu 5884 Sort 队列+多叉哈夫曼树
Sort Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Des ...
- python3与anaconda2共存
我是先下载了python3,后来因为需要2为了省事就去下载了anaconda2,但发现这里有个很严重的共存问题. 找了一下网上的各种共存问题,发现网上的基本上都是基于一个anaconda然后通过虚拟环 ...
- 基于组的策略(GBP)开启新型网络设计时代
在传统物理网络环境下,划分VLAN,分配网段,设置路由是个网工应该熟悉的内容.在SDN环境下,比如neutron虚拟网络,我们用API创建网络,子网,虚拟路由器,负载均衡和防火墙,这些还是太网络化了. ...