面向对象与函数式编程语言深入解析
1. 面向对象语言的特性
1.1 私有字段和方法
真正的面向对象语言能够保护对象的字段不被其他对象的方法直接操作。私有字段是指不能从对象外部声明的任何函数或方法中获取或更新的字段;私有方法则是不能从对象外部调用的方法。
隐私保护是通过编译器的类型检查阶段来实现的。在C语言的符号表中,每个字段偏移量和方法偏移量都伴随着一个布尔标志,用于指示该字段是否为私有。在编译表达式 c.f() 或 c.x 时,很容易检查该字段,并拒绝从对象声明外部的任何方法访问私有字段。
不同的语言允许以下几种隐私和保护类型:
- 仅对声明它们的类可访问的字段和方法。
- 对声明类及其任何子类可访问的字段和方法。
- 仅在与声明类相同的模块(包、命名空间)内可访问的字段和方法。
- 从声明类外部只读,但可由类的方法写入的字段。
对于基于类的语言,这些保护类型通常可以通过编译时的类型检查来静态实施。
1.2 无类语言
有些面向对象语言根本不使用类的概念。在这样的语言中,每个对象可以实现它想要的任何方法,并拥有它想要的任何数据字段。这类语言的类型检查通常是动态的(在运行时进行),而不是静态的(在编译时进行)。
许多对象是通过克隆创建的:复制一个现有的对象(或模板对象),然后修改其中的一些字段。因此,即使在无类语言中,也会有一组相似的对象(“伪类”)可以共享描述符。当对象 b 通过克隆对象 a 创建时,它可以与
超级会员免费看
订阅专栏 解锁全文
1532

被折叠的 条评论
为什么被折叠?



