版主
- 积分
- 679
- 金钱
- 679
- 注册时间
- 2013-9-23
- 在线时间
- 95 小时
|
声明:在使用模块之前请下载UOL 1.0.1版本。由于设计上的一些失误导致第一个版本不能正常使用模块。请见谅。
UOL模块这个概念是UOL语言独特创新的一个重要部分。为了提高UOL语言的效率,继承这个功能基本上从这个语言中删去掉了。取而代之的是模块(module)这个独特的功能。
模块类似于Java中的interface。您可以在类的定义同时选择是否添加模块,例如:
//模块定义
public module MTest
{
}
//类定义同时添加模块MTest,添加的关键字是‘adds'
public class Test adds MTest
{
}
当添加模块后,模块中可见的变量和方法成员便被该类所继承下来。在UOL语言中,类可以最多添加256个模块,而模块本身则不能添加模块。这种设计可以防止多层继承所造成的内存浪费和效率低下的问题。在UOL语言中,抽象方法(abstract)只能定义在模块中,不能出现在类中。
下面代码中介绍了模块中的成员是如何被使用的:
//模块
public module MTest
{
public String s = "hello UOL";
public void print(String s)
{
System.out.printString(s);
System.out.newLine();
//调用抽象方法
foo();
}
//抽象方法声明
public abstract void foo();
}
//类Foo添加模块MTest
public class Foo adds MTest
{
//实现MTest中的抽象方法,必须加关键字@Override
@Override
public void foo()
{
System.out.printString("implement foo");
System.out.newLine();
}
public void test()
{
//打印模块MTest中的变量s
System.out.printString(s);
System.out.newLine();
//使用模块MTest中的方法print
print(s);
}
}
public class Test
{
public static void main()
{
//创建Foo的对象
Foo foo = new Foo();
//调用Foo中的方法test
foo.test();
while(true)
{
}
}
}
编译运行后您会看到如下信息:
当在模块中声明了抽象方法时,如果在类中不加以实现,编译器会报错并提示您去实现这个方法。抽象方法本身不允许有实例代码,只能声明。
在做这个实验时请更新编译器至1.0.1版本, 即把UOL_1_0_1中文件解压替换UOL_1_0_0中uol.exe。
|
|