package com1
/**
* @author yangxin_ryan
*/
class Test56 {
private[this] val private_val1:Int = 1
private val private_val2: Int = 2
def method1(param: Test56) = param.private_val1
def method2(param: Test56) = param.private_val2
}
-
Private 用Private修饰的成员仅在包含了成员定义的类或对象内部可见,但是可以通过getter或者setter或者其他方式对外提供,同样规则也适用于内部类;
-
Private[this] 相对于来说更加严格一些,仅仅可以被同一个类的同一个对象访问;
-
private相对于Private[this]来说破坏了面向对象的封装性,而private[this]仅仅可以被this访问到,这样才符合面向对象设计;
如上图我们使用method1的param去调用private[this]修饰的元素时,报错,而method2的param则没有问题;
因此,上面我们总结的,private[this]会相对于private来说更严格一些,只能在对象内部访问
-
Protected的话,对于Java中的protected更严格了一些,它只允许保护乘员在定义了该成员的类的子类中被访问。
-
Protected[this]的话,只能在当前子类对象中访问负累的field和method,无法通过其他子类对象访问负累的field和method,此处和Private[this]类似;
-
而Java中,Protected关键字修饰的成员,除了在定义了该成员的子类中可以访问外,也可以在同一个包里进行访问。
-
对于Priavte[this]来说,还是Private[this]最为严格;