学习语言
类与实例
使用类组织初始化逻辑、实例字段、继承、覆写与父类调用。
类 人 则
公 只 域 姓名:文;
公 域 年岁:数;
法 初始化(姓名:文,年岁:数)则
置 此.姓名 为 姓名;
置 此.年岁 为 年岁;
终
法 自述():文 则
归 「吾名」 加 此.姓名;
终
终
令 子:人 为 人(「言序」,2);
言 子.自述();
置 子.年岁 为 3;调用类会创建实例并调用初始化。域声明字段类型,可组合公/私、只和静;只读字段允许在初始化期间首次赋值,之后拒绝改写。成员读取先查字段,再查方法;方法取出时自动绑定此。
言序支持单继承,子类未找到的方法会沿父类链查找;子类实例可以赋给父类标注:
类 生灵 则
公 域 名:文;
法 初始化(名:文)则 置 此.名 为 名;终
法 名号():文 则 归 此.名;终
终
类 人 承 生灵 则
法 初始化(名:文)则 父.初始化(名);终
法 名号():文 则 归 父.名号() 加 「,人」;终
终
定 来客:生灵 为 人(「言序」);
言 来客.名号();父.方法(…)从当前方法定义类的直接父类开始查找实现,但仍绑定当前动态此实例;父.初始化(…)因此可以显式完成构造链。父只能出现在有父类的实例法内,不能单独读取,也不能越过私有成员边界。
覆写必须保持字段/方法种类、静态或实例属性、参数与归值签名;公开父类法不能覆写为私有。普通对象.方法继续动态派发到实际实例的最具体实现,只有显式父.方法跳过当前覆写。
类不可承自身。使用协声明字段和方法形状,类通过纳显式承诺结构符合性;静态检查器会在执行前验证字段类型、方法参数和归值。
协 可名 则
域 姓名:文;
法 自述():文;
终
类 人 纳 可名 则
公 只 域 姓名:文;
法 自述():文 则 归 此.姓名;终
终运行时的值 是 类名和值 是 协议名会识别完整继承链与显式协议链,详见基础语法与类型。