Growing程序员数客联盟

Scala中类成员变量与Java的区别

2016-10-15  本文已影响792人  Woople

在Java中类成员变量的访问修饰符可以分为4种:public,protected,private和默认。这里默认指的是成员变量前面不加任何修饰符。
通过下面的表格简单回顾一下这4种修饰符在Java中的区别

可见性 public protected 默认 private
同一个类
同一个包中任何的类
同一个包中的子类
同一个包外的子类 是,通过继承
包外的任何非子类

Scala中类成员变量的访问修饰符

分为private,protected和默认(无任何修饰符)

class Person {
  private var id = 0

  def equals(other: Person): Boolean = {
    //other是Person类的一个对象,而且equals在这个类中
    //所以other可以访问id这个变量
    //如果在其他类中生成一个Person对象是无法访问id这个变量的
    id == other.id
  }
}
class Person {
  private[this] var id = 0

  //只有当前对象可以访问id
  def generateId = (new util.Random).nextInt(3) + id

  def equals(other: Person): Boolean = {
    //这行编译会报错:value id is not a member of Person id == other.id
    //other这个对象已经无法再访问id这个变量了
    id == other.id
  }
}
上一篇 下一篇

猜你喜欢

热点阅读