nestedclasses.scala

来自「JAVA 语言的函数式编程扩展」· SCALA 代码 · 共 99 行

SCALA
99
字号
//############################################################################// Test nested classes//############################################################################// $Id: NestedClasses.scala 5359 2005-12-16 15:33:49Z dubochet $// The following set of classes tests nasty references to "outer"// values.class A(pa : Int) {  def a1 = pa;  class B(pb : Int) {    def b1 = pa+pb+a1;    class C(pc : Int) extends A(b1) {      def c1 = pc+pb+pa    }    val c1 = new C(13)  }}trait M {  def m1 = 1}class A1(x : Int) extends A(x) with M {  class D extends B(14) {    val c2 = new C(15);    class E extends C(16) {      def e1 = c1+b1+a1+m1;      def e2 = new D();    }  }}// The following set of classes test qualified "this" and "super"// references.class AA {  def m = 1;  class BB {    def m = 2;    class CC {      def m = 3;      def am = AA.this.m;      def bm = BB.this.m;    }  }}class AAA {  def f = 42;}class BBB extends AAA {  override def f = 24;}class AAA1 extends AAA {  override def f = 111;  class BBB1 extends BBB {    override def f = AAA1.super.f;  }  class BBB2 extends BBB {    override def f = BBB2.super.f;  }  class BBB3 extends BBB {    override def f = super.f;  }  class BBB4 extends BBB { }}object Test {  def main(args: Array[String]): Unit = {    val a = new A1(12);    val d = new a.D;    val e = new d.E;    Console.println("e.e1 = " + e.e1);    val aa = new AA;    val bb = new aa.BB;    val cc = new bb.CC;    Console.println("cc.m = " + cc.m);    Console.println("cc.am = " + cc.am);    Console.println("cc.bm = " + cc.bm);    val aaa = new AAA1;    val bbb1 = new aaa.BBB1;    val bbb2 = new aaa.BBB2;    val bbb3 = new aaa.BBB3;    val bbb4 = new aaa.BBB4;    Console.println("aaa.f = " + aaa.f);    Console.println("bbb1.f = " + bbb1.f);    Console.println("bbb2.f = " + bbb2.f);    Console.println("bbb3.f = " + bbb3.f);    Console.println("bbb4.f = " + bbb4.f);  }}//############################################################################

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?