1、class

scala的类和C#中的类有点不一样,诸如: 声明一个未用priavate修饰的字段 var age,scala编译器会字段帮我们生产一个私有字段和2个公有方法get和set ,这和C#的简易属性类似;若使用了private修饰,则它的方法也将会是私有的。这就是所谓的统一访问原则。

  1. //类默认是public级别的
  2. class Person{
  3. var age=18  //字段必须得初始化()
  4. def Age=age //这个是方法,没有参数可以省略()
  5. def incremen(){this.age+=1}
  6. }
  7. class Student{
  8. var age=20     //底层编译器会自动为私有的age添加get和set的公有方法,可以理解为伪public类型
  9. private[this] var gender="male" //private[this] 只有该类的this可以使用
  10. private var name="clow" //声明了private,底层编译器会自动为私有的name添加get和set的私有方法
  11. //但是可以自己定义属性方法
  12. def getName=this.name
  13. def setName(value:String){this.name=value}
  14. }
  15. //构造器的使用
  16. class Teacher {
  17. var age: Int = _
  18. var name: String = _  //可以预留
  19. //重载的构造器和C#里面的public Teacher(){}类似
  20. def this(age: Int, name: String){
  21. this() //必须得调用一次主构造器
  22. this.age=age
  23. this.name=name
  24. }
  25. }

2、scala没有静态的修饰符,但object下的成员都是静态的 ,若有同名的class,这其作为它的伴生类。在object中一般可以为伴生类做一些初始化等操作,如我们常常使用的val array=Array(1,2,3)  (ps:其使用了apply方法)

  1. object Dog{
  2. private var age=0
  3. def Age={
  4. age+=1
  5. age
  6. }
  7. }
  8. class Dog{
  9. var age1=Dog.age //Dog.age是object Dog的私有字段。这不禁让我回想起了C++的友元类
  10. }

3、Apply的使用,怎么解释呢? 还是来看看怎么用它来实现单例模式

  1. class ApplyTest private{  //添加private隐藏构造器
  2. def sayHello(){
  3. println("hello jop")
  4. }
  5. }
  6. object ApplyTest{
  7. var instant:ApplyTest=null
  8. def apply() ={
  9. if(instant==null) instant=new ApplyTest
  10. instant
  11. }
  12. }
  13. object ApplyDemo {
  14. def main(args:Array[String]){
  15. val t=ApplyTest()
  16. t.sayHello()
  17. }
  18. }

Scala中class和object的区别的更多相关文章

  1. Python中type与Object的区别

    Python中type与Object的区别 在查看了Python的API后,总算明白了.现在总结如下: 先来看object的说明: Python中关于object的说明很少,甚至只有一句话: clas ...

  2. Scala中 => Unit 与 () =>Unit的区别

    () => Unit ---> 是一个函数:=> Unit --> 是一个执行结果为Unit的表达式 code: => Unit是 by name 传递参数.参数是一个返 ...

  3. Scala中==,eq与equals的区别

    根据官方API的定义: final def ==(arg0: Any): Boolean The expression x == that is equivalent to if (x eq null ...

  4. Scala中class、object、case class、case object区别

    /** class.object.case class.case object区别 * * class 类似Java中的class: * object Scala不能定义静态成员,用定义单例对象代之: ...

  5. 【Todo】【转载】Scala中Array, List, Tuple的区别

    参考了这篇文章: https://my.oschina.net/u/1034176/blog/512314 1. 在Scala 2.7中,Array.List都不能混合类型,只有Tuple可以:而在S ...

  6. Scala中None, Nil, Nothing的区别

    Nil是一个空的List None是一个object,是Option的子类型 List[Nothing]

  7. javascript中function和object的区别,以及javascript如何实现面向对象的编程思想.

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  8. scala中val和var的区别

    1:内容是否可变:val修饰的是不可变的,var修饰是可变的 2:val修饰的变量在编译后类似于java中的中的变量被final修饰 3:lazy修饰符可以修饰变量,但是这个变量必须是val修饰的 p ...

  9. scala中nothing和null的区别

    1:nothing是所有类型的子类,他没有具体的实例对象,常见的应用:抛出异常.程序exit.无线循环等. 2:nothing是所有类型的子类,也是null的子类,nothing没有对象,但是可以用来 ...

随机推荐

  1. bzoj1046

    首先这肯定是一道LIS的变形,这次求的是方案,还要求字典序最小 (注意这个字典序最小是指下标最小而不是数最小) 首先预处理以每个数为首,能组成多长的上升序列(这里我们用单调队列解决) 然后按照位置顺序 ...

  2. MCI音乐播放

    缘由: 在改正俄罗斯方块程序的功能的时候,想给这个程序增加一个背景音乐.本想用PlayWave来做的,但想到这个功能十分常用,那还不如封装一个自己的CMusic 类,以备不时之需.本来以为很容易的,可 ...

  3. iis 5.1 连接 sql 2005

    VS2005+SQL2005 ASP.NET2.0数据库连接总结 通过上篇文章(http://www.cnblogs.com/user34j/archive/2007/01/23/628426.htm ...

  4. 从零开始学习jQuery (六) AJAX快餐

    一.摘要 本系列文章将带您进入jQuery的精彩世界, 其中有很多作者具体的使用经验和解决方案,  即使你会使用jQuery也能在阅读中发现些许秘籍. 本篇文章讲解如何使用jQuery方便快捷的实现A ...

  5. ASP.NET MVC3细嚼慢咽---(3)Razor视图语法

    MVC3.0中新增加了Razor视图,Razor视图的语法以@符号为核心,貌似在这个时代离不开@了,微博,邮箱都用这个. 1.输出变量和文本 @DateTime.Now @for (int i = 0 ...

  6. TinyXml和tinyxml2

    C++操作xml没有标准库的支持,TinyXml是个不错的xml操作库,以前总是使用TinyXml读写xml,但是最近对大量xml进行读写时,速度真的是有点慢,特别是在调试时,每次启动读xml就要好长 ...

  7. 多组 RadioButtonList 获取值

    <div class="row">    <table>        <thead><tr><th>操作</th ...

  8. rmi 与 远程代理复习

    ref:http://blog.csdn.net/pipisky2006/article/details/7296592 RMI: 远程方法调用,简单来说以前是调用本地对象的方法,现在如果对象在另外一 ...

  9. cloudstack安装篇1-linux命令修改IP信息

    方式一:   ifconfig eth0 192.168.1.18 netmask 255.255.255.0   说明:该种方式可以使改变即时生效,重启后会恢复为原来的IP   方式二:   vi ...

  10. Kafka系列(二)特性和常用命令

    Kafka中Replicas复制备份机制 kafka将每个partition数据复制到多个server上,任何一个partition有一个leader和多个follower(可以没有),备份的个数可以 ...