Xojo 语言 继承链中的构造函数调用顺序

Xojoamuwap 发布于 2 天前 3 次阅读


阿木博主一句话概括:Xojo【1】 语言中继承链【2】中的构造函数【3】调用顺序解析与代码实现

阿木博主为你简单介绍:
在面向对象编程【4】中,构造函数的调用顺序是一个关键问题,它直接影响到类的初始化过程。本文将深入探讨 Xojo 语言中继承链中的构造函数调用顺序,并通过实际代码示例【5】来展示如何正确地处理构造函数的调用。

一、
Xojo 是一种面向对象的编程语言,它支持类继承和多态【6】等面向对象特性。在 Xojo 中,当一个子类【7】从父类【8】继承时,构造函数的调用顺序对于确保对象正确初始化至关重要。本文将详细分析 Xojo 中继承链中的构造函数调用顺序,并提供相应的代码示例。

二、Xojo 中构造函数的调用顺序
在 Xojo 中,构造函数的调用顺序如下:

1. 父类的构造函数首先被调用。
2. 子类的构造函数接着被调用。
3. 如果子类中调用了其他构造函数(如父类或基类【9】的构造函数),则按照调用顺序执行。

三、代码示例
以下是一个简单的 Xojo 类继承示例,展示了构造函数的调用顺序:

```xojo
classid【10】: 0x01010001
superclass【11】: NSObject【12】
module【13】: MyApp
uuid【14】: 7B9F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace【15】: MyApp
flags【16】: &HideBrowser, &Final, &ReleaseOnly

classid: 0x01010002
superclass: BaseClass
module: MyApp
uuid: 8E7F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x01010003
superclass: NSObject
module: MyApp
uuid: 9E7F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x01010004
superclass: DerivedClass
module: MyApp
uuid: A27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x01010005
superclass: NSObject
module: MyApp
uuid: B27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x01010006
superclass: NSObject
module: MyApp
uuid: C27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x01010007
superclass: NSObject
module: MyApp
uuid: D27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x01010008
superclass: NSObject
module: MyApp
uuid: E27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x01010009
superclass: NSObject
module: MyApp
uuid: F27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x0101000A
superclass: NSObject
module: MyApp
uuid: G27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x0101000B
superclass: NSObject
module: MyApp
uuid: H27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x0101000C
superclass: NSObject
module: MyApp
uuid: I27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x0101000D
superclass: NSObject
module: MyApp
uuid: J27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x0101000E
superclass: NSObject
module: MyApp
uuid: K27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x0101000F
superclass: NSObject
module: MyApp
uuid: L27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x01010010
superclass: NSObject
module: MyApp
uuid: M27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x01010011
superclass: NSObject
module: MyApp
uuid: N27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x01010012
superclass: NSObject
module: MyApp
uuid: O27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x01010013
superclass: NSObject
module: MyApp
uuid: P27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x01010014
superclass: NSObject
module: MyApp
uuid: Q27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x01010015
superclass: NSObject
module: MyApp
uuid: R27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x01010016
superclass: NSObject
module: MyApp
uuid: S27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x01010017
superclass: NSObject
module: MyApp
uuid: T27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x01010018
superclass: NSObject
module: MyApp
uuid: U27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x01010019
superclass: NSObject
module: MyApp
uuid: V27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x0101001A
superclass: NSObject
module: MyApp
uuid: W27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x0101001B
superclass: NSObject
module: MyApp
uuid: X27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x0101001C
superclass: NSObject
module: MyApp
uuid: Y27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x0101001D
superclass: NSObject
module: MyApp
uuid: Z27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x0101001E
superclass: NSObject
module: MyApp
uuid: AA27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x0101001F
superclass: NSObject
module: MyApp
uuid: BB27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x01010020
superclass: NSObject
module: MyApp
uuid: CC27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x01010021
superclass: NSObject
module: MyApp
uuid: DD27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x01010022
superclass: NSObject
module: MyApp
uuid: EE27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x01010023
superclass: NSObject
module: MyApp
uuid: FF27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x01010024
superclass: NSObject
module: MyApp
uuid: GG27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x01010025
superclass: NSObject
module: MyApp
uuid: HH27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x01010026
superclass: NSObject
module: MyApp
uuid: II27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x01010027
superclass: NSObject
module: MyApp
uuid: JJ27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x01010028
superclass: NSObject
module: MyApp
uuid: KK27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x01010029
superclass: NSObject
module: MyApp
uuid: LL27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x0101002A
superclass: NSObject
module: MyApp
uuid: MM27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x0101002B
superclass: NSObject
module: MyApp
uuid: NN27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x0101002C
superclass: NSObject
module: MyApp
uuid: OO27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x0101002D
superclass: NSObject
module: MyApp
uuid: PP27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x0101002E
superclass: NSObject
module: MyApp
uuid: QQ27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x0101002F
superclass: NSObject
module: MyApp
uuid: RR27F6C2B-7B3C-4E2C-8E3C-9F9C6F9F7B9F
namespace: MyApp
flags: &HideBrowser, &Final, &ReleaseOnly

classid: 0x010