Scala关键字class和object
来源:互联网 发布:vb 线程钩子实例 编辑:程序博客网 时间:2024/06/03 04:38
面向对象
和Java一样Scala面向对象
类是对象的模板、抽象。定义一个类后,可以使用关键字new来创建一个类的对象。 通过对象可以使用定义的类的所有功能。
class
class表示类 和Java不同,class不能运行。虽然可以定义main方法,但是不能运行
class Point(xc: Int, yc: Int) { var x: Int = xc var y: Int = yc def move(dx: Int, dy: Int) { x = x + dx y = y + dy println ("Point x location : " + x); println ("Point y location : " + y); }}
继承:在Scala中,我们可以扩展一个Scala类,使用与Java中相同的方式设计继承的类(使用extends关键字),但有两个限制:方法重写需要override关键字,只有主构造函数可以通过参数调用基类构造函数。让我们扩展上面的类,并增加一个类的方法。
object
Scala单例对象是十分重要的,没有像在Java一样,有静态类、静态成员、静态方法,但是Scala提供了object对象,这个object对象类似于Java的静态类,它的成员、它的方法都默认是静态的。
Scala它使用单例对象。单例是一种只能有一个实例的对象。使用object关键字对象而不是类关键字创建单例。由于无法实例化单例对象,因此无法将参数传递给主构造函数。下面列出Scala使用单例对象的所有示例。
object 是可以运行的
class Point(val xc: Int, val yc: Int) { var x: Int = xc var y: Int = yc def move(dx: Int, dy: Int) { x = x + dx y = y + dy }}object Demo { def main(args: Array[String]) { val point = new Point(10, 20) printPoint def printPoint{ println ("Point x location : " + point.x); println ("Point y location : " + point.y); } }}
单例对象和伴生对象
如果有同样一个类与该object名字一样,则称该object为该类的伴生对象,相对应,该类为object的伴生类。如果一个类有它的伴生对象,这个类就可通过object的名字访问到所有成员,但object不在该类的作用范围。
class University{val id = University.newStudentNoprivate var number = 0def aClass (number : Int){this.number += number}}object University { private var studentNo = 0 def newStudentNo = { studentNo += 1 studentNo } }
参考自:
http://www.jianshu.com/p/538fd44137fd
http://www.runoob.com/scala/scala-basic-syntax.html
http://www.yiibai.com/scala/scala_classes_objects.html
http://www.cnblogs.com/-crazysnail/p/3984010.html
http://www.cnblogs.com/nethk/p/5609320.html
- Scala关键字class和object
- scala中的object和class
- Scala 之 object 和class
- scala中的object和class
- scala中 object 和 class的区别
- Scala之旅-class和object详解
- Scala的object和class的区别
- Scala之旅-class和object详解
- scala class和object的区别
- Scala之旅-class和object详解
- scala之case class 和case object
- Scala之旅-class和object详解
- 5-Scala对象(Class)和类(Object)
- scala class和object,trait的区别
- Scala之旅-class和object详解
- Object-C-@class关键字和@property参数
- scala-29:Case class和Case object代码实战解析
- class与object的区别和使用方法[scala]
- Unix网络编程5种IO模型
- 3:AngularJS:模糊查询过滤内容,下拉菜单排序,过滤敏感字符,验证判断后添加表格信息
- Goland 编辑器更换安装新的主题
- iOS多线程——你要知道的NSThread都在这里
- 基于landmark的疲劳检测
- Scala关键字class和object
- MapReduce
- 狭义相对论的洛伦兹变换几何推导
- Weblogic服务器安装
- 机器学习实战读书笔记(二) K-近邻算法
- JVM 年轻代 老年代 持久代 GC
- day11多线程
- cocos 编译 apk 出错 resove to a path with no project.properties
- ASP.NET中二进制图片的存储与读取