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

Xojo阿木 发布于 15 天前 4 次阅读


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

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

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

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

1. 父类的构造函数首先被调用。
2. 子类的构造函数接着被调用。
3. 如果子类中调用了其他构造函数(如使用 `Super()`),则调用该构造函数。
4. 如果子类中调用了 `InheritsFrom()` 方法,则调用指定父类的构造函数。

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

```xojo
classid: 0x01010001
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-000000000000

classid: 0x01010002
superclass: BaseClass
module: MyApp
uuid: 00000000-0000-0000-0000-000000000001

classid: 0x01010003
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-000000000002

classid: 0x01010004
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-000000000003

classid: 0x01010005
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-000000000004

classid: 0x01010006
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-000000000005

classid: 0x01010007
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-000000000006

classid: 0x01010008
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-000000000007

classid: 0x01010009
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-000000000008

classid: 0x0101000A
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-000000000009

classid: 0x0101000B
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-00000000000A

classid: 0x0101000C
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-00000000000B

classid: 0x0101000D
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-00000000000C

classid: 0x0101000E
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-00000000000D

classid: 0x0101000F
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-00000000000E

classid: 0x01010010
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-00000000000F

classid: 0x01010011
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-000000000010

classid: 0x01010012
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-000000000011

classid: 0x01010013
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-000000000012

classid: 0x01010014
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-000000000013

classid: 0x01010015
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-000000000014

classid: 0x01010016
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-000000000015

classid: 0x01010017
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-000000000016

classid: 0x01010018
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-000000000017

classid: 0x01010019
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-000000000018

classid: 0x0101001A
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-000000000019

classid: 0x0101001B
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-00000000001A

classid: 0x0101001C
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-00000000001B

classid: 0x0101001D
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-00000000001C

classid: 0x0101001E
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-00000000001D

classid: 0x0101001F
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-00000000001E

classid: 0x01010020
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-00000000001F

classid: 0x01010020
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-000000000020

classid: 0x01010021
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-000000000021

classid: 0x01010022
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-000000000022

classid: 0x01010023
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-000000000023

classid: 0x01010024
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-000000000024

classid: 0x01010025
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-000000000025

classid: 0x01010026
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-000000000026

classid: 0x01010027
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-000000000027

classid: 0x01010028
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-000000000028

classid: 0x01010029
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-000000000029

classid: 0x0101002A
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-00000000002A

classid: 0x0101002B
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-00000000002B

classid: 0x0101002C
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-00000000002C

classid: 0x0101002D
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-00000000002D

classid: 0x0101002E
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-00000000002E

classid: 0x0101002F
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-00000000002F

classid: 0x01010030
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-000000000030

classid: 0x01010031
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-000000000031

classid: 0x01010032
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-000000000032

classid: 0x01010033
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-000000000033

classid: 0x01010034
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-000000000034

classid: 0x01010035
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-000000000035

classid: 0x01010036
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-000000000036

classid: 0x01010037
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-000000000037

classid: 0x01010038
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-000000000038

classid: 0x01010039
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-000000000039

classid: 0x0101003A
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-00000000003A

classid: 0x0101003B
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-00000000003B

classid: 0x0101003C
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-00000000003C

classid: 0x0101003D
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-00000000003D

classid: 0x0101003E
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-00000000003E

classid: 0x0101003F
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-00000000003F

classid: 0x01010040
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-000000000040

classid: 0x01010041
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-000000000041

classid: 0x01010042
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-000000000042

classid: 0x01010043
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-000000000043

classid: 0x01010044
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-000000000044

classid: 0x01010045
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-000000000045

classid: 0x01010046
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-000000000046

classid: 0x01010047
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-000000000047

classid: 0x01010048
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-000000000048

classid: 0x01010049
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-000000000049

classid: 0x0101004A
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-00000000004A

classid: 0x0101004B
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-00000000004B

classid: 0x0101004C
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-00000000004C

classid: 0x0101004D
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-00000000004D

classid: 0x0101004E
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-00000000004E

classid: 0x0101004F
superclass: DerivedClass
module: MyApp
uuid: 00000000-0000-0000-0000-00000000004F

classid: 0x01010050
superclass: NSObject
module: MyApp
uuid: 00000000-0000-0000-0000-000000000050

classid: 0x01010051
superclass: DerivedClass
module: MyApp
uuid: 000000