Scala之封装

一、java封装与scala封装

        封装就是把抽象出的数据和对数据的操作封装在一起,数据被保护在内部,程序的其它部分只有通过被授权的操作(成员方法),才能对数据进行操作。Java封装操作如下,

(1)将属性进行私有化

(2)提供一个公共的set方法,用于对属性赋值

(3)提供一个公共的get方法,用于获取属性的值

        Scala中的public属性,底层实际为private,并通过get方法(obj.field())和set方法(obj.field_=(value))对其进行操作。所以Scala并不推荐将属性设为private,再为其设置public的get和set方法的做法。但由于很多Java框架都利用反射调用getXXX和setXXX方法,有时候为了和这些框架兼容,也会为Scala的属性设置getXXX和setXXX方法(通过@BeanProperty注解实现)。

二、访问权限

(1)Scala 中属性和方法的默认访问权限为public,但Scala中无public关键字。

(2)private为私有权限,只在类的内部和伴生对象中可用。

      (3)protected为受保护权限,同类、子类可以访问,同包无法访问。

(4)private[包名]增加包访问权限,包名下的其他类也可以使用

三、方法

在类中,格式为

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

                                方法体

        }

四、构造器

Scala类的构造器包括:主构造器和辅助构造器

(1)辅助构造器,函数的名称this,可以有多个,编译器通过参数的个数及类型来区分。

(2)辅助构造方法不能直接构建对象,必须直接或者间接调用主构造方法。

(3)构造器调用其他另外的构造器,要求被调用构造器必须提前声明。

  def main(args: Array[String]): Unit = {
// 调用对应的构造器
    val person0 = new Person
    val person1 = new Person
    val person2 = new Person
   
// scala中的构造器区分 主构造器和辅助构造器
// 主构造器就是类声明的地方
class Person() {
  // 整个类中的代码都是主构造器的代码
  println("主构造器的调用")
  var name: String = "zhangsan"
  var age: Int = 10

  // 辅助构造器
  def this(name: String) = {
    // 辅助构造器的第一行  必须直接或者间接的调用主构造器
    this()
    println("辅助构造器调用")
    this.name = name
  }

  // 间接调用主构造器
  // 如果辅助构造器直接相互调用的话  只能是写在后面的构造器调用前面的构造器
  def this(name: String, age: Int) = {
    // 通过调用别人的辅助构造器  间接调用主构造器
    this(name)
    println("辅助构造器2调用")
    this.age = age
  }

五、构造器参数

Scala类的主构造器函数的形参包括三种类型:未用任何修饰、var修饰、val修饰

(1)未用任何修饰符修饰,这个参数就是一个局部变量

(2)var修饰参数,作为类的成员属性使用,可以修改

(3)val修饰参数,作为类只读属性使用,不能修改

case样例类

// 主构造参数
//(1)未用任何修饰符修饰,这个参数就是一个局部变量
// 同时和类中的属性是不能够冲突的
//(2)var修饰参数,作为类的成员属性使用,可以修改
//(3)val修饰参数,作为类只读属性使用,不能修改

class Person06(val name: String, var age: Int) {
  def test():Unit = {
    println("姓名:"+name +"年纪:"+ age)
  }
}

// 样例类  默认使用主构造器参数   默认就是val   var需要自己写处理
// 同时会生产大量的方法  直接使用
case class Person061( name: String, var age: Int){}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值