zoukankan      html  css  js  c++  java
  • 大数据学习之Scala面向对象41

    20Scala面向对象

    Scala的面向对象

    我们要封装数据,定义模板等操作,所以我们需要面向对象。

    1)scala中的单例对象

    scala当中,是没有static的,scala给我们提供了单例模式的实现方法。就是使用

    关键字object。

    static在java中修饰属性和方法,目的是直接类名.进行调用。

    2)scala类与构造器的使用

    scala中主构造器:

    定义在类名后面的构造器叫主构造器

    如果主构造器中成员变量属性没有被val var修饰的话,该属性不能被访问
    相当于java中没有对外提供get方法

    如果成员属性使用var修饰的话,相当于java中对外提供了get方式和set方式
    如果成员属性使用val修饰的话,相当于java中对外只提供了get方式

    scala辅助构造器:

    定义在class类中,可以有多个辅助构造器

    测试结果:

    3)构造器的访问权限

    在主构造器或者辅助构造器前加上private修饰符即可

    构造该对象时就会报错

    4)类的访问权限

    直接在类的前面加上private[this]即可

    [this]代表当前包下的都可以访问,其他任何包都不可以访问包括子包,默认也就是this

    [demo]类的前面如果加上包名,表示当前类在当前包及其子包可见,可以访问

    当前包测试,使用this

    其他包下就会报错!!!!  

    使用 [包名]

    类的前面如果加上包名,表示当前类在当前包及其子包可见,可以访问

    5)伴生对象

    什么是伴生对象? 单例类名与类名相同

    在伴生对象中可以访问类的私有成员方法和属性

    6)  特质

    相当于java中Interface接口,trait就是抽象类trait跟抽象类最大的区别:trait支持多重继承

     

    一般情况

     

    编写Animal

    编写Pig

     

    混入特质

    就加一个with

    7)抽象类

    就在class前面加一个abstract

    继承抽象类可以再继承特质 但是抽象类写在前 with连接

    8)模式匹配 match case

  • 相关阅读:
    SparkStreaming整合Flume的pull方式之启动报错解决方案
    n-map安装实操
    性能测试从入门到入土的一点思考
    基于Influxdb对InfluxDBResultMapper的一点扩展
    数据库恢复技术
    (转引)数据库索引(MySQL)
    携程一面凉经
    一文总结机器学习常见模型
    深度学习实战
    DFS
  • 原文地址:https://www.cnblogs.com/hidamowang/p/11032270.html
Copyright © 2011-2022 走看看