本文主要是介绍Scala学习笔记 --- Private和Private[this]以及Protected、Protected[this],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
package com1/*** @author yangxin_ryan*/
class Test56 {private[this] val private_val1:Int = 1private val private_val2: Int = 2def method1(param: Test56) = param.private_val1def 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]最为严格;
这篇关于Scala学习笔记 --- Private和Private[this]以及Protected、Protected[this]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!