7.scala面向对象2
来源:互联网 发布:淘宝卖家下架的宝贝在哪里 编辑:程序博客网 时间:2024/06/06 02:54
1.介绍scala面向对象2的时候先提下以下几点:
1.1 scala函数是指不依赖于类的,一旦依赖于类的时候,就叫方法,过程就是一个没有返回值的方法
1.2 scala中有类似于lazy级别的操作,lazy的变量在第一次使用时才会被实例化。spark中也有类似的操作,例如spark中Transformation类型的操作都是lazy的,不会触发job执行,Action级别的操作会触发job执行,这在后续的写spark博文时,我将跟大家一起分享和学习
1.3 类可以直接访问Object的成员,甚至时私有的成员
2.子类在继承超类的时候,不会继承超累的Object对象
3.scala 中override 即可复写父类的方法,有可以复写子类的属性,方法可以赋值给属性,属性也可以赋值给方法
4.isInstanceOf和asInstanceOf的区别
isInstanceOf:判断下是不是父类型
asInstanceOf[T] : 将对象强制转换成T类型
classOf[T]: 获取T的Class对象,返回类型的运行时呈现状态。这是一个存根方法,实际的实现是由编译器填补(自动生成)
5.trait:很多书上翻译成特质,实际上他就类似于java的Interface,区别在于trait的方法不一定是抽象方法,当trait中每个方法都是具体的方法的时候,trait就是一个工具类
6.Scala中使用with关键字来实现接口,但也有例外,trait的特殊性:
class SparkContext(config: SparkConf) extends Logging {虽然Logging是trait,但是在scala的语法中,第一个继承的关键字必须是extends.
7.在scala中trait支持多重继承,但是类和抽象类是不支持多重继承的,即一个类可以继承多个trait,但是只能继承一个抽象类或具体类
8.Scala中有一个抽象属性或抽象成员
抽象属性:未被实例化的属性 val name:String 若定义抽象属性则必须定义类型,因为若不说明类型的话,编译的时候推导不出什么类型,子类中要直接进行赋值
9.Scala的类的实例对象也可以混入接口,当扩展当前对象的实例的功能
trait Logger { def log(message:String) { println("Logger: " + message) }}trait RichLogger extends Logger { override def log(message: String) { println("RichLogger: " + message) }}class Loggin(val name:String) extends Logger{ def logging { println("Hi,welcome!" + name) log(name) }}object HelloTrait { def main(args: Array[String]): Unit = { val personLogin = new Loggin("DTSpark") with RichLogger personLogin.logging }}
结果为:
/* -------------------------------- *
| Hi,welcome ! DTSpark |
| RichLogger: DTSpark |
* ------------------------------*/
- 7.scala面向对象2
- Scala学习 2 Scala面向对象
- Scala的面向对象
- Scala面向对象
- Scala面向对象学习
- Scala面向对象
- Scala面向对象
- scala面向对象
- Scala 面向对象编程
- 5.Scala面向对象
- Scala的面向对象
- scala面向对象编程
- Scala面向对象编程
- Scala面向对象编程
- scala学习三:scala面向对象
- scala 学习笔记 面向对象
- Scala之旅-面向对象
- Spark基础-Scala面向对象
- Token相关
- [Android]实现高德地图导航
- JPush:引用library/.aar文件的JPush
- 第一单元
- OkHttpClient加载图片给DisposableObserver,CompositeDisposable调度控制后台任务队列简单代码
- 7.scala面向对象2
- dubbo rpc服务使用
- 29行代码搞定批量自定义创建用户,并生成日志
- MTK Kernel启动流程源码解析 3 init_task
- 已解决:Android Studio Error:Connection timed out: connect
- 一篇SSM框架整合友好的文章(二)
- BLE 绑定流程
- flume将log4j日志数据写入到hdfs
- java之工厂模式