• Scala:Object与Class的区别


    1.在Scala中声明private变量,Scala编译器会自动生成get,set方法
    2.在Scala中变量需要初始化
    3.在Scala中没有静态修饰符,在object下的成员全部都是静态的,如果在类中声明了与该类相同名字的object则该object是该类的”伴生对象”,所以对于一个class来说,所有的方法和成员变量在实例被 new 出来之前都是无法访问的
    可以理解为Scala把类中的static集中放到了object对象中,伴生对象和类文件必须是同一个源文件,可以用伴生对象做一些初始化操作.
    4.在Java中可以通过interface实现多继承,在Scala中可以通过特征(trait)实现多重继承,但是与Java不同的是,它可以定义自己的属性和实现方法体
    5.object不能提供构造器参数,也就是说object必须是无参的

    Scala中object与class的区别
    在Scala中,类名可以和对象名为同一个名字,该对象称为该类的伴生对象,类和伴生对象可以相互访问他们的私有属性,但是它们必须在同一个源文件中

    class


     

    scala中class:编译器会自动帮我们生产一个私有字段和2个公有方法get和set
    类只会被编译,不能直接执行,类的声明和主构造器在一起被声明,在一个类中,主构造器只有一个.
    类和它的伴生对象可以相互访问其私有成员,class中的main方法没什么用了

    object


    scala中object:所有成员变量和方法默认都是 static 的,所以可以直接访问main方法

    class和object的一个差别是,单例对象不带参数,而类可以.因为你不能用new关键字实例化一个单例对象,你没有机会传递给它参数

    class Lis {
      var age=19
    }
    object Test{
      def main(args: Array[String]): Unit = {
        var s=new Lis
        s.age=10    //set
        println(s.age)  //get
      }
    }
  • 相关阅读:
    wcf 调试
    adf 笔记
    oracle 自定义比较函数
    【SpringMVC】SpringMVC系列3之@PathVariable映射URL占位符参数
    【SpringMVC】SpringMVC系列2之@RequestMapping 映射约束请求
    【SpringMVC】SpringMVC系列1之HelloWorld
    【持续集成】[Jenkins]Job中如何传递自定义变量
    【持续集成】使用Jenkins实现多平台并行集成
    【云计算】Netflix 开源持续交付平台 Spinnaker
    【Other】推荐点好听的钢琴曲
  • 原文地址:https://www.cnblogs.com/AlanWilliamWalker/p/10959055.html
Copyright © 2020-2023  润新知