scala面向对象
来源:互联网 发布:java 多个文件打包zip 编辑:程序博客网 时间:2024/05/20 15:12
封装、继承、多态 其实不是面向对象的核心特征,只是语法层面的支撑。
面向对象的核心特征:
1.对象不用关心消息的来源和去向,只关心消息本身,即对象是弱耦合的、消息驱动的
2.一个对象的行为不影响另外一个对象的行为
3.面向接口编程
函数和方法的区别:
函数不依赖类,方法依赖于类
过程:
方法没有返回值
package com.sparktest/** * 1.scala中定义类是用class关键字; * 2.可以使用new ClassName的方式构建出类的对象 * 3.如果名称相同,则object中的内容都是class的静态内容,也就是说object中的内容class都可以在没有实例的时候直接去调用, * 正是因为可以在没有类的实例的时候去调用object中的一切内容,所以可以使用object中的特定方法来创建类的实例,这个特定 * 的方法就是apply方法 * 4.object中的apply方式是class对象生成的工厂方法,用于控制对象的生成 * 5.很多框架的代码一般直接调用抽象类的object的apply方法去生成类的实例对象: * (1)apply具有类的对象生成的一切生杀大权,抽象类是不可以直接实例化的,在apply方法中可以实例化抽象类的子类,以Spark中的图计算 * 为例,Graph是抽象的class,在object Graph中的apply方法实际上是调用了Graph的子类GraphImpl来构建Graph类型的对象实例的,从Spark * 图计算的源码可以看出,GraphImpl的构造也是使用了object GraphImpl的apply方法 * (2)这种方式更加能够应对代码版本迭代(修改)的变化,这是更高意义的面向接口编程 * 6.object HelloOOP是class HelloOOP的伴生对象,class HelloOOP可以直接访问object HelloOOP中的一切内容,而class HelloOOP * 是object HelloOOP的伴生类,object HelloOOP可以直接访问class HelloOOP的一切内容,一个特例是用private[this]修饰的成员 * 7.在定义scala的class的时候,可以直接在类名后面()加入类的构造参数,此时在apply()中也必须有该参数 * 8.scala中可以在object中构建很多apply() * 9.scala中的很多集合都是使用apply的方式构造的,例如:Array */class HelloOOP(age: Int) { val name = "Spark" def sayHello = println { "Hi,My name is " + name + "I'm " + age + "years old!" }}object HelloOOP { var number = 0 def main(args: Array[String]): Unit = { println("Hello OOP!") //val helloOOP = new HelloOOP //val helloOOP = HelloOOP(10) val helloOOP = HelloOOP() helloOOP.sayHello } def apply(age:Int): HelloOOP = { println("My name is " + number) number += 1 new HelloOOP(age) } def apply(): HelloOOP = { println("My name is " + number) number += 1 new HelloOOP(10) }}
0 0
- Scala的面向对象
- Scala面向对象
- Scala面向对象学习
- Scala面向对象
- Scala面向对象
- scala面向对象
- Scala 面向对象编程
- 5.Scala面向对象
- Scala的面向对象
- scala面向对象编程
- Scala面向对象编程
- Scala面向对象编程
- scala学习三:scala面向对象
- Scala学习 2 Scala面向对象
- scala 学习笔记 面向对象
- Scala之旅-面向对象
- 7.scala面向对象2
- Spark基础-Scala面向对象
- 在循环中获取索引(数组下标)
- 从今天开始记录我的学习
- 在centos环境下,用python读写文件
- SQL 递归查询(根据指定的节点向上获取所有父节点,向下获取所有子节点)
- cxf用户令牌 WSPasswordCallback
- scala面向对象
- 终于搞定android驱动USB摄像头了!
- 内存分析工具 MAT 的使用
- Java Concurrency in Practice ---对象的共享
- scrollview 和 listview滑动冲突
- 大型情感类电视连续剧--Android高德之旅(3)地图交互
- 基础练习——选择排序
- 【PHP高级】Smarty模板三
- First Position of Target