zoukankan      html  css  js  c++  java
  • scala学习笔记2:面向对象编程部分基础

    以下主要记录的是看完scala in programming这本书Functional Objects(第六章)后的要点总结。

    1,程序中可变对象(var)和不可变对象(val)使用的权衡问题

     不可变对象(val)相比较可变对象(var)

      优点:简单,没有状态的变化,没有多线程问题。

      缺点:需要对象大量copy,比较损耗空间和时间。

      (例如Java中的String也是不可变变脸,但是为了大量对象copy,我们有时会用StringBuilder)

        

    2,基于scala实现一个基本类主要包含以下几个方面:

      2.1 和Java不同,类可以直接带参数,参数不是成员变量,要引用对象中某个变量时得声明为fields。形式如下:    

    1 class Rational(n: Int, d: Int) {
    2       val numer: Int = n  
    3 }

      2.2 require进行条件检查,不符合条件会跑出异常

      2.3 this使用和java相似

      2.4 主构造函数和辅构造函数

        和Java一样,scala中的类也可以有多个构造函数。但是scala中的构造函数有主构造函数和辅构造函数之分。像上面Rational的主构造函数就是this(a, b)的形式。任何辅构造函数必须先调用其他辅助构造函数或者主构造函数。这样约束,最终所有的构造函数都会调用主构造函数。

      2.5 重载运算符

        Java中没有运算符重载。scala中的运算符重载和C++中的运算符重载类似。

      2.6 函数重载和Java相似

      2.7 类型隐含转换

        scala中的类型隐含转换形式如下(将Int类型转化为Rational类型):

    implict def inToRational(x: Int) = new Rational(x)

        隐式转换类型有范围限制,由于是后台自动做的,所以使用起来得小心,要不然都不知道是怎来的。

      

  • 相关阅读:
    QT小技巧
    C#通用类库设置开机自运行禁用任务管理器注册表等操作
    C#通用类库农历类(很全面)
    C#通用类库导出数据(比其他方式快200倍)
    如果你想当程序员!请看!
    C#通用类库汉字转拼音
    C#通用类库加密解密类
    C#制作图片压缩工具
    QT编写图片数据转换工具
    C++面试题 virtual
  • 原文地址:https://www.cnblogs.com/superhedantou/p/5904745.html
Copyright © 2011-2022 走看看