zoukankan      html  css  js  c++  java
  • 2.3 Scala面向对象编程基础

    一、类

    1.类的定义

     Unit表示什么都不返回

    方法体最后一句的值,就是方法的返回值。

     

    2.类成员的可见性

     

    3.方法的定义方式

    定义方法的时候加圆括号,调用时可以加圆括号c.getValue()也可以不加圆括号c.getValue;

    定义方法的时候不加圆括号,调用时不可以加圆括号。

    4.(类)构造器

    和Java区别在于,scala可以在类的名称后面圆括号里面直接给出一些参数,而且构造器里面的参数加了val或var关键字去修饰,系统会自动把它变成自己内部的成员字段,并且提供get和set方法;如果没有加val或var关键字,那么它不会变成一个内部字段,只是简单的起到往里传参的作用,不会生成内部成员。

     

     

     

    二、对象

    1.单例对象(singleton object)

     

     

    2.apply方法

    apply方法是Scala中独有的

    如果定义了类的apply方法,当你给这个类生成一个实例,用这个实例名称()括起来,给他传递参数的时候,它会自动去调用它的apply方法。

     

      

    3.update方法

    4.unapply方法

    根据已有对象,提取出对象的参数。

    主函数的第一条语句:先执行右边调用apply函数,再执行左边调用unapply函数

    三、继承

     

    1.抽象类

    抽象字段:只定义,没有初始化值

    抽象方法:只定义方法,没有实现方法体

    2.扩展类

    • 重载父类的抽象成员override关键字是可选的,例如:子类实现父类中的一些抽象成员或者把原来的字段给覆盖了,这个override是可选的。
    • 重载父类的非抽象成员override关键字必须要写
    • 只能重载val类型字段,不能重载var字段

    举例:

     

    Scala类的顶层是一个叫Any的抽象类,所有的类都是从这里继承下来的。

    从Any类派生出两个子类:AnyVal和AnyRef,AnyVal保存在寄存器中,不能实例化;AnyRef保存在堆中,可以实例化;Null是所有引用类型的子类型

    3.Option类

     Option类是一个抽象类,它有个子类叫Some子类,

    当不确定类的返回值是否为空时,可以将返回值类型设置为Option;如果无返回值时,返回None,有返回值时,会封装到Some对象中返回来。

    举例:

    四、特质

    Scala的特质类似于Java中的接口,不仅实现了接口的功能,还可以定义其他特性;

    举例1:

    举例2:一个类继承父类且混入多个特质

    五、模式匹配

    scala中case语句后面不需要加break,每次执行一个case,会自动退出。

     

    自动调用半生对象的apply方法生成实例 

    第三个case Car的功能是把当前传进来的值提取出来,提取出来之后打印println

    六、包

    举例:

    参考文献:

    【1】Spark编程基础_中国大学MOOC(慕课)

  • 相关阅读:
    LINUX重启MYSQL的命令
    如何在linux下实现mysql数据库每天自动备份
    mysql 2013错误解决
    mysql按年度、季度、月度、周、日统计查询的sql语句
    MySQL 时间戳(Timestamp)函数
    jQuery 选择器大全总结
    使用Git的Push出现rejected
    js实现分页的几个源码,看完基本就懂了
    Get,Post请求中文乱码问题有效解决方法
    web应用中文乱码问题的原因分析
  • 原文地址:https://www.cnblogs.com/nxf-rabbit75/p/11723585.html
Copyright © 2011-2022 走看看