Scala-面向对象基础-类

类定义

  • Scala类中访问属性默认为public,有别于Java的默认访问属性是default
  • 对var字段会生成get、set方法
  • 对val字段生成get方法
  • 重新一个非抽象方法必须使用override关键字
    override def method1:String={}
  • 重写一个用abstract声明的抽象类中的抽象方法时,不需要override关键字

构造器

  1. scala中的类不需要明确声明一个主构造器,而是直接将构造参数通过构造参数列表声明为类的一部分
  2. 直接写在类体中的既不是类的成员变量也不是成员函数的部分,会自动收集为构造函数的体
  3. scala里主构造器之外的构造器被称为辅助构造器。
  4. Scala的辅助构造器定义开始于 def this(参数){this(同类构造器参数)}
  5. Scala里每个辅助构造器的第一行必须调用其它辅助构造器或主构造器

静态类

  1. scala中的类通过class关键字定义,但类中不能定义静态成员(或静态方法),但可以定义到单例对象中
  2. 单例对象需要通过object关键字来声明
  3. 一个单例对象可以单独存在,也可以绑定到一个类上
  4. 当一个单例对象和某个类写在同一个源文件中且共享同一个名字时,他们就产生了一个绑定的关系
  5. 此时单例对象称为该类的伴生对象。类称为该单例对象的伴生类
  6. 单例对象当中的所有方法,都可以不需要创建对象而直接通过object单例对象的名字直接来调用
  7. 类和他的伴生对象可以互相访问其私有成员

接口

  1. 特质 trait可以类比java中的interface,
    java中称为类实现了接口,scala中称类混入了特质
  2. 与java中的接口不同的是,scala中的特质可以有有方法体的方法
  3. 在类中可以通过extends或 with 关键字来让类混入特质(scala中可以通过extends混入特质)
  4. 一个类的声明中只能有一个 extends,但是可以有多个with

泛型

scala中泛型是用方括号引起来的,如:val arr = ArrayString

懒加载

  1. val 和 var定义的量加上lazy关键字
  2. 后续真正用到这个量时才真正开辟空间赋值,减少了内存的浪费

样例类

  1. 声明类时,在class关键字前加上case关键字,这个类就成为了样例类
  2. 样例类必须要显式的声明一个主构造器,同时会默认隐式的声明一个空辅助构造器
  3. 样例类默认实现序列化接口
  4. 样例类实体化时,不用带new关键字

Option类

  1. Option在Scala中有两个结果Some和None
  2. Some表示有返回值,None表示没有返回值
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值