Skip to content

Object-Oriented Languages

:material-circle-edit-outline: 约 234 个字 :material-clock-time-two-outline: 预计阅读时间 1 分钟

Chapter14.pdf'

Single Inheritance of Data Fields

单继承:每个子类只有一个父类

image-20250614154638874

field 的顺序也继承,保证同一个 field 的 offset 都是一样的

image-20250614155539441

image-20250614155614869

从下往上依次查找,直到找到为止

image-20250614161706367

动态方法可能被重写

image-20250614161817601

解决方法与 field 类似,按顺序排

image-20250614161938409

Multiple Inheritance

Fields

有多个父类,不能直接用 prefix 了

image-20250614164657658

每一个 field 是唯一的,我们就看哪些父类包含这个 field

有点像寄存器分配

上图中是先排 D,然后再确定各个父类的布局(有哪些 offset)

这样子会导致父类存在内部碎片

image-20250614165337997

将内部碎片限制在类描述符,对象创建时不会创建内部碎片

Method

image-20250614170007102

与 field 同理,用图着色方法

image-20250614170444773

可能会动态载入新的类

image-20250614170525941

image-20250614170531872

Testing Class Membership

例如检查一个对象是不是某个类的对象

image-20250614170931033

image-20250614170950941

强制类型转换

Chapter14.pdf

Private Fields and Methods