外部类

关于Scala的路徑依赖类型(Path-dependent type)

巧了我就是萌 提交于 2020-03-20 21:21:53
3 月,跳不动了?>>> 咋看这个术语,有点吓倒。其实不是什么新东西,也是讲关于内部类和外部类的事,不过两者有点区别。在Scala中,内部类和外部类的一些行为特性和Java差不多。 请看如下的Scala代码: class Outer { private val x = 10 class Inner { private val y = x + 10 } } val outer = new Outer val inner = new outer.Inner // inner变量可以显式声明类型 val inner: outer.Inner = new outer.Inner 内部类Inner可以存取外部类成员(包括private成员),但外部类不能存取内部类的private成员. 内部类之所以能存取外部类的成员,是因为内部类隐含地持有外部类的实例。这点和Java是一样的,上述的代码可以用Java语言来表达: public class Op { public void test1(){ Outer outer = new Outer(); Outer.Inner inner = outer.new Inner(); System.out.println(inner); } public static void main(String[] args) { Op op = new Op();