06 Scala 面向对象编程(基础部分)

面向对象编程(基础部分)

1. 类与对象

1.1 定义类

  1. 基本语法

    [修饰符] class 类名 {
      类体
    }
    
  2. scala 中,类并不声明为 public ,所有这些类都具有公有可见性。

  3. 一个 scala 源文件可以包含多个类,而且默认都是 public

1.2 属性/成员变量

  1. 如果赋值为 null,则一定要加类型,因为不加类型,那么该属性的类型就是 Null 类型。
  2. 如果在定义属性时,暂时不赋值,也可以使用 _ (下划线) ,让系统分配默认值。

1.3 创建对象

  1. scala 在声明对象变量时,可以根据创建对象的类型自动推断,所以类型声明可以省略,但当类型和后面 new 对象类型有继承关系即多态时,就必须写了。

2. 方法

  1. 基本语法

    def 方法名(参数列表)[: 返回值类型] = {
      方法体
    }
    

3. 构造器

3.1 介绍

  1. Scala 构造对象也需要调用构造方法,而且可以有任意多个构造方法(重载)。
  2. Scala 类的构造器包括:主构造器和辅助构造器。

3.2 构造器的基本语法

class 类名(形参列表) {   // 主构造器
  // 类体
  def this(形参列表) {  // 辅助构造器
  }
  def this(形参列表) {  // 辅助构造器可以有多个 
  }
}
  • 辅助构造器的名称为 this ,可以有多个,编译器通过不同参数来区分。

3.3 构造器的注意事项和细节

  1. Scala 构造器作用是完成对新对象的初始化,构造器没有返回值。
  2. 主构造器的声明直接放置于类名之后。
  3. 主构造器会执行类定义中的所有语句。(构造器也是方法)
  4. 如果主构造器无参数,小括号可以省略,构建对象时调用的构造方法的小括号也可以省略。
  5. 辅助构造器名称为 this ,多个辅助构造器通过不同参数列表进行区分,底层就是构造器的重载。
  6. 如果想让主构造器变成私有的,可以在 () 之前加上 private ,这样用户只能通过辅助构造器来构造对象了。
  7. 辅助构造器的声明不能和主构造器的声明一致,会发生错误,即构造器名重复。

4. 属性高级

4.1 构造器参数

  1. Scala 类的主构造器的形参未用任何修饰符修饰,那么这个参数就是局部变量。
  2. 如果参数使用 val 关键字声明,那么 Scala 会将参数作为类的私有的只读属性使用。
  3. 如果参数使用 var 关键字声明,那么 Scala 会将参数作为类的成员属性使用,并会提供属性的 xxx()xxx_$eq 方法,即这时的成员属性是私有的,但是可读写。

4.2 Bean 属性

  1. 给某个属性加入 @BeanProperty 注解后,会生成 getXxxsetXxx 的方法,并且与原来底层自动生成的 xxxxxx_$eq 方法,没有冲突,两者可以共存。

4.3 对象创建的流程分析

  1. 加载类的信息(属性信息,方法信息)。
  2. 在内存中(堆)开辟空间。
  3. 使用父类的构造器进行初始化。
  4. 使用主构造器对属性进行初始化。
  5. 使用辅助构造器对属性进行初始化。
  6. 将开辟的对象的地址赋给声明的引用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值