1,scala提供的“特征”可以同时拥有抽象方法和具体方法,一个类可以拥有多个特质

2,类可以通过“extends”关键字继承trait,继承trait后必须实现trait中的所有抽象方法,而不是用 override 关键字

3,scala的类只能单继承,单可以继承多个trait,trait之间使用 with 关键字连接

 package scalaTest

 object TraitApp{
// 创建trait
trait trait1{
// 没有具体实现的方法
def sayTrait(name : String)
// 有具体实现的方法
def sayHello = println("nice to meet you")
} trait tarit2{
def sysTrait2(age : Int)
} trait trait3{
def sysTrait3(num : Int)
} class Person(private var name : String) extends trait1 with tarit2{
def getName = name
def sayTrait(name : String) = println("Hello " + name)
def sysTrait2(age : Int) = println(name + " is " + age)
} def main(args: Array[String]): Unit = {
val p = new Person("trait")
p.sayTrait(p.getName)
p.sysTrait2(33)
p.sayHello // 可在创建对象时用with
val p1 = new Person("TRAIT") with trait3{
def sysTrait3(num : Int) = println(num)
}
p1.sysTrait3(33)
}
}

4,trait中可定义抽象字段(没有初始化的字段)和具体的字段(已经初始化了的字段), 类继承了trait后,必须实现抽象字段,即初始抽象字段,类中可以直接使用trait中字段。而类继承了类,需使用 super 关键字使用父类中的字段。

5,继承多个trait的时候,总体构造原则是“从左到右,从父到子构造从右到左,从子到父调用”。

6,自身类型(selftype)

有很多特质不是所有类都能随随便便继承的,例如异常类所能继承的特质,其他类继承并不合适,所以需要对特质加以约束。

通过“this : T => {}”的形式,指定这个特质只能被T或T的子类继承

也可以通过“this : {}  => {}”的形式,指定这个特质能被继承的规则,“this : {}”中的“{}”就可以设置规则,比如必须拥有指定对象、方法的类才能继承这个特质。

需要注意的是,只能定义一次自身类型,不能定义多个this

Scala_Trait特征的更多相关文章

  1. 卷积神经网络提取特征并用于SVM

    模式识别课程的一次作业.其目标是对UCI的手写数字数据集进行识别,样本数量大约是1600个.图片大小为16x16.要求必须使用SVM作为二分类的分类器. 本文重点是如何使用卷积神经网络(CNN)来提取 ...

  2. [占位-未完成]scikit-learn一般实例之十一:异构数据源的特征联合

    [占位-未完成]scikit-learn一般实例之十一:异构数据源的特征联合 Datasets can often contain components of that require differe ...

  3. PRINCE2特征(三)

    提到不确定性,可能很多从事项目管理相关工作的人都会感同身受,一系列临时性问题,比如:变更.延期.调整.计划赶不上变化.团队调整等的出现,都是项目中再正常不过的内容.但正常不等于合理,我们还是要去思考一 ...

  4. PRINCE2特征(二)

    英国体系环境下项目有什么特征(二) 今天又要和大家分享了,这个时间也是自己很喜欢的时刻.上次给大家分享的是英国体系下项目的特征之一:临时性.不知道大家还有没有印象,英国体系下项目的特征有五个,今天来给 ...

  5. P2特征(一)

    很多人在提到项目的特征,肯定能说出来很多的内容,但是在英国体系下,项目的特点有哪些呢?这些特点引深的内容又有什么深度的含义.         项目具有临时性:很多人都知道项目是临时的,结束了就团队成员 ...

  6. sift特征

    已经有很多博客已经将sift特征提取算法解释的很清楚了,我只是记录一些我不明白的地方,并且记录几个理解sift特征比较好的博客. 1. http://aishack.in/tutorials/sift ...

  7. sift特征源码

    先贴上我对Opencv3.1中sift源码的注释吧,虽然还有很多没看懂.先从detectAndCompute看起 void SIFT_Impl::detectAndCompute(InputArray ...

  8. kaggle入门2——改进特征

    1:改进我们的特征 在上一个任务中,我们完成了我们在Kaggle上一个机器学习比赛的第一个比赛提交泰坦尼克号:灾难中的机器学习. 可是我们提交的分数并不是非常高.有三种主要的方法可以让我们能够提高他: ...

  9. OpenCV特征点检测------ORB特征

    OpenCV特征点检测------ORB特征 ORB是是ORiented Brief的简称.ORB的描述在下面文章中: Ethan Rublee and Vincent Rabaud and Kurt ...

随机推荐

  1. Java 8方法引用使用指南

    [编者按]本文作者为拥有15年 Java 开发经验的资深程序员 Per-Åke Minborg,主要介绍如何灵活地解析 Java 中的方法引用.文章系国内 ITOM 管理平台 OneAPM 编译呈现. ...

  2. Orcal数据库,使用EF的自增处理

    1.定义EF拦截器,截获执行命令前的操作.修改执行sql.还需要定义orcal序列,供自增使用 using System; using System.Collections.Generic; usin ...

  3. [翻译] DBCamera 轻量级定制摄像头

    DBCamera 轻量级定制摄像头 https://github.com/danielebogo/DBCamera DBCamera is a simple custom camera with AV ...

  4. Top 25 Most Frequently Asked Interview Core Java Interview Questions And Answers

    We are sharing 25 java interview questions , these questions are frequently asked by the recruiters. ...

  5. python_web应用雏型

    python_web应用雏型 Web应用程序顾名思义,就是一种可以通过Web访问的应用程序, Web应用的最大特点是用户只需要有网络和浏览器,不需要再安装其他软件就可顺利通过web访问到程序. WEB ...

  6. 激活office软件

    1. 打开校园软件正版化激活网址 http://nic.seu.edu.cn/2015/0113/c12333a115290/page.htm 2. 下载KMS激活脚本 3. 登陆easyconnec ...

  7. 高可用api接口网络部署方案

    我们平时接触的产品都是7*24小时不间断服务,产品中的api接口肯定也是高可用的,下面我向大家分享一下互联网公司api接口高可用的网络部署方案.  我们一般通过http://le.quwenzhe.c ...

  8. Uva1395 POJ3522 Slim Span (最小生成树)

    Description Given an undirected weighted graph G, you should find one of spanning trees specified as ...

  9. python统计磁盘使用情况

    #coding:utf-8import os; def SortList(item):    return item[1]; def ReadSize(fileName):    return flo ...

  10. 【洛谷】【堆+模拟】P2278 操作系统

    from HNOI2003 [题目描述:] 写一个程序来模拟操作系统的进程调度.假设该系统只有一个CPU,每一个进程的到达时间,执行时间和运行优先级都是已知的.其中运行优先级用自然数表示,数字越大,则 ...