面向对象系统中的不同对象模型
1. S3 模型的改进需求与 S4 模型的引入
在编程实践中,S3 模型虽然易于创建类,但缺乏面向对象编程通常所需的安全性。比如,在 S3 中很容易拼写错误类名或随意更改对象的类,而 R 不会对此发出警告,这可能导致代码混乱且难以调试。为了增强安全性,S4 模型应运而生。S4 模型实现了现代面向对象编程语言的诸多特性,如正式的类定义、继承、多态(参数化)和封装。
1.1 S4 类的创建与构造
S4 类使用 setClass 函数创建,至少需要指定类名和其属性(在 S4 中称为插槽)。通过 representation 函数可以指定插槽的预期类型,这有助于进行类型检查。以下是创建 S4Color 和 S4Rectangle 类的示例代码:
library(methods)
setClass(
Class = "S4Color",
representation = representation(
color = "character"
)
)
setClass(
Class = "S4Rectangle",
representation = representation(
a = "numeric",
b = "numeric",
color = "S4Color"
)
)
构造函数通过 new 函数自动创建,只需传入要实例化的类名和插槽的
超级会员免费看
订阅专栏 解锁全文

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



