两周自制脚本语言-第9天 设计面向对象语言
第9天 设计面向对象语言 目标:为Stone语言添加类和对象的支持。仅支持单一继承 9.1 设计用于操作类与对象的语法 添加的类与对象的处理功能后,下面的Stone语言就能被正确执行了 class Position { x = y = 0 def move(nx,ny) { x = nx; y = ny } } p = Position.new p.move(3, 4) p.x = 10 print p.x p.y 首先定义一个Position类,方法由def语句定义。类中字段通过变量表示,并赋了初始值。上面的例子定义了move方法以及字段x与y。 类名后接.new组成的代码表示创建一个对象。为简化实现,这里规定Stone语言无法定义带参数的构造函数。 如果希望继承其他的类,只需在类名之后接着写上extends即可。例如,下面的代码能够定义一个及程序Position类的子类Pos3D class Pos3D extends Position { z = 0 def set(nx,ny,nz) { x = nx;y = ny;z = nz } } p = Pos3D.new p.move(3,4) print p.x p.set(5,6,7) print p.z Stone不支持方法重载。在同一个类中无法定义参数个数或类型不同的同名方法 9.2 实现类所需的语法规则 代码清单9