王家林亲授《DT大数据梦工厂》大数据实战视频 Scala 深入浅出实战经典(1-64讲)完整视频、PPT、代码下载:
百度云盘:http://pan.baidu.com/s/1c0noOt6
腾讯微云:http://url.cn/TnGbdC
360云盘:http://yunpan.cn/cQ4c2UALDjSKy 访问密码 45e2
土豆:http://www.tudou.com/programs/view/85BX4YBSdSI/
优酷:http://v.youku.com/v_show/id_XMTI4MjU5NjIyMA==.html?from=s1.8-1-1.2
爱奇艺:http://www.iqiyi.com/w_19rrxj6hmh.html#vfrm=2-3-0-1
腾讯视频: http://v.qq.com/boke/page/y/0/j/y0159g6di6j.html
技术爱好者尤其是大数据爱好者 可以加DT大数据梦工厂的qq群

DT大数据梦工厂① :462923555
DT大数据梦工厂②:437123764
DT大数据梦工厂③ :418110145

微信公众账号: DT_Spark
王家林老师微信号: 18610086859
王家林老师QQ: 1740415547
王家林老师邮箱: 18610086859@126.com

本视频由王家林老师, 亲自讲解, 完全通过代码实战把您带人大数据的时代.

package com.parllay.scala.oop

/**
* Created by richard on 15-8-4.
* 第50讲:Scala中Variance变化点
*/ class Animal
class Bird extends Animal
class Chicken extends Animal class Pair22[+T](var p: T){
//def haveLegs(p1: T) = println("")
} object Variance_Point { /**
根据Liskov替换原则,如果A是B的子类,那么能适用于B的所有操作,都适用于A。
让我们看看这边Function1的定义,是否满足这样的条件。
假设Bird是Animal的子类,那么看看下面两个函数之间是什么关系: def f1(x: Bird): Animal // instance of Function1[Bird, Animal]
def f2(x: Animal): Bird // instance of Function1[Animal, Bird]
在这里f2的类型是f1的类型的子类。为什么? 我们先看一下参数类型,根据Liskov替换原则,f1能够接受的参数,f2也能接受。
在这里f1接受的Bird类型,f2显然可以接受,因为Bird对象可以被当做其父类Animal的对象来使用。 再看返回类型,f1的返回值可以被当做Animal的实例使用,f2的返回值可以被当做Bird的实例使用,
当然也可以被当做Animal的实例使用。 所以我们说,函数的参数类型是逆变的,而函数的返回类型是协变的。 那么我们在定义Scala类的时候,是不是可以随便指定泛型类型为协变或者逆变呢?答案是否定的。
通过上面的例子可以看出,如果将Function1的参数类型定义为协变,或者返回类型定义为逆变,
都会违反Liskov替换原则,因此,Scala规定,协变类型只能作为方法的返回类型,
而逆变类型只能作为方法的参数类型。类比函数的行为,结合Liskov替换原则,
就能发现这样的规定是非常合理的。
* @param args
*/
def main(args: Array[String]) { } }

  

最新文章

  1. [BOT] 一种android中实现“圆角矩形”的方法
  2. PHP团队 编码规范 & 代码样式风格规范
  3. JavaScript-语法基础
  4. C语言 复杂队列(链表队列)
  5. java中+的使用
  6. bash{} 方法总结
  7. Android(java)学习笔记70:同步中的死锁问题以及线程通信问题
  8. hdu 3715
  9. adb取出安装在手机中的apk
  10. nodejs环境设置理解
  11. 解决cuvid中的sample编译和链接问题
  12. 在项目中迁移MS SQLServer到Mysql数据库,实现MySQL数据库的快速整合
  13. Nginx 学习笔记(十)介绍HTTP / 2服务器推送(译)
  14. 004-mac下Java6与Java8 安装
  15. Linux打开文件设置
  16. MapStruct
  17. window如何安装redis服务、卸载redis服务和启动redis服务
  18. [Web 前端 ] 五大WEB主流浏览器及四大内核
  19. Web - TCP的三次握手
  20. Luogu 3960 [NOIP2017] 列队 - splay|线段树

热门文章

  1. poj 1080 (LCS变形)
  2. 如何将jar包加入到Maven本地仓库
  3. Python成长笔记 - 基础篇 (三)python列表元组、字典、集合
  4. jsp连接sqlServer数据库教程
  5. [转]Java中的回车换行符/n /r /t
  6. PyPy 2.1 正式版发布
  7. 个性二维码开源专题<液化/圆角/效果>
  8. OWIN的理解和实践(二) – Host和Server的开发
  9. 设计模式之美:Prototype(原型)
  10. GoogleApis 屏蔽